ERC-20
Fitness
Overview
Max Total Supply
5,000,000,000 DOSE
Holders
2,925 (0.00%)
Market
Price
$0.00 @ 0.000000 ETH (+3.44%)
Onchain Market Cap
$926,050.00
Circulating Supply Market Cap
$599,004.00
Other Info
Token Contract (WITH 18 Decimals)
Balance
1,500 DOSEValue
$0.28 ( ~0.00011563311547644 Eth) [0.0000%]Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|---|---|---|---|---|
1 | HTX | DOSE-USDT | $0.0002 0.0000001 Eth | $1,173,444.00 6,469,476,702.095 DOSE | 92.0814% |
2 | MEXC | DOSE-USDT | $0.0002 0.0000001 Eth | $60,584.00 327,526,639.730 DOSE | 4.6618% |
3 | BingX | DOSE-USDT | $0.0002 0.0000001 Eth | $28,659.00 156,331,398.120 DOSE | 2.2251% |
4 | LATOKEN | DOSE-USDT | $0.0002 0.0000001 Eth | $6,508.57 34,475,606.216 DOSE | 0.4907% |
5 | Gate.io | DOSE-USDT | $0.0002 0.0000001 Eth | $4,325.56 23,575,393.100 DOSE | 0.3356% |
6 | XT.COM | DOSE-USDT | $0.0002 0.0000001 Eth | $2,158.27 11,788,297.600 DOSE | 0.1678% |
7 | Gate.io | DOSE-ETH | $0.0002 0.0000001 Eth | $219.06 1,205,965.795 DOSE | 0.0172% |
8 | Uniswap V2 (Ethereum) | 0XB31EF9E52D94D4120EB44FE1DDFDE5B4654A6515-0XC02AAA39B223FE8D0A0E5C4F27EAD9083C756CC2 | $0.0002 0.0000001 Eth | $192.22 1,076,013.463 0XB31EF9E52D94D4120EB44FE1DDFDE5B4654A6515 | 0.0153% |
9 | Sushiswap | 0XB31EF9E52D94D4120EB44FE1DDFDE5B4654A6515-0X557B933A7C2C45672B610F8954A3DEB39A51A8CA | $0.0002 0.0000001 Eth | $59.62 333,696.243 0XB31EF9E52D94D4120EB44FE1DDFDE5B4654A6515 | 0.0047% |
10 | AscendEX (BitMax) | DOSE-USDT | $0.0001 0.0000000 Eth | $44.23 442,568.000 DOSE | 0.0063% |
11 | PancakeSwap (v2) | 0X833F307AC507D47309FD8CDD1F835BEF8D702A93-0X7837FD820BA38F95C54D6DAC4CA3751B81511357 | $0.0005 0.0000002 Eth | $36.58 10,139.407 0X833F307AC507D47309FD8CDD1F835BEF8D702A93 | 0.0001% |
12 | ApeSwap | 0X7837FD820BA38F95C54D6DAC4CA3751B81511357-0XBB4CDB9CBD36B01BD1CBAEBF2DE08D9173BC095C | $0.0005 0.0000002 Eth | $26.81 55,274.159 0X7837FD820BA38F95C54D6DAC4CA3751B81511357 | 0.0008% |
13 | PancakeSwap (v2) | 0X7837FD820BA38F95C54D6DAC4CA3751B81511357-0X5D0158A5C3DDF47D4EA4517D8DB0D76AA2E87563 | $0.0005 0.0000002 Eth | $17.79 36,693.090 0X7837FD820BA38F95C54D6DAC4CA3751B81511357 | 0.0005% |
Contract Name:
DOSE
Compiler Version
v0.7.6+commit.7338295f
Optimization Enabled:
Yes with 2000 runs
Other Settings:
default evmVersion, Audited
Contract Source Code (Solidity Standard Json-Input format)Audit Report
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; import "@animoca/ethereum-contracts-assets/contracts/token/ERC20/ERC20.sol"; /** * @title DOSE */ contract DOSE is ERC20 { constructor( address[] memory recipients, uint256[] memory values, string memory tokenURI_ ) ERC20("DOSE", "DOSE", 18, tokenURI_) { _batchMint(recipients, values); } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; import {ManagedIdentity} from "@animoca/ethereum-contracts-core-1.1.1/contracts/metatx/ManagedIdentity.sol"; import {IERC165} from "@animoca/ethereum-contracts-core-1.1.1/contracts/introspection/IERC165.sol"; import {AddressIsContract} from "@animoca/ethereum-contracts-core-1.1.1/contracts/utils/types/AddressIsContract.sol"; import {IERC20} from "./IERC20.sol"; import {IERC20Detailed} from "./IERC20Detailed.sol"; import {IERC20Allowance} from "./IERC20Allowance.sol"; import {IERC20SafeTransfers} from "./IERC20SafeTransfers.sol"; import {IERC20BatchTransfers} from "./IERC20BatchTransfers.sol"; import {IERC20Metadata} from "./IERC20Metadata.sol"; import {IERC20Permit} from "./IERC20Permit.sol"; import {IERC20Receiver} from "./IERC20Receiver.sol"; /** * @title ERC20 Fungible Token Contract. */ abstract contract ERC20 is ManagedIdentity, IERC165, IERC20, IERC20Detailed, IERC20Metadata, IERC20Allowance, IERC20BatchTransfers, IERC20SafeTransfers, IERC20Permit { using AddressIsContract for address; // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)") bytes32 internal constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; uint256 public immutable deploymentChainId; // solhint-disable-next-line var-name-mixedcase bytes32 internal immutable _DOMAIN_SEPARATOR; mapping(address => uint256) public override nonces; string internal _name; string internal _symbol; uint8 internal immutable _decimals; string internal _tokenURI; mapping(address => uint256) internal _balances; mapping(address => mapping(address => uint256)) internal _allowances; uint256 internal _totalSupply; constructor( string memory name_, string memory symbol_, uint8 decimals_, string memory tokenURI_ ) { _name = name_; _symbol = symbol_; _decimals = decimals_; _tokenURI = tokenURI_; uint256 chainId; assembly { chainId := chainid() } deploymentChainId = chainId; _DOMAIN_SEPARATOR = _calculateDomainSeparator(chainId, bytes(name_)); } // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() public view override returns (bytes32) { uint256 chainId; assembly { chainId := chainid() } // recompute the domain separator in case of fork and chainid update return chainId == deploymentChainId ? _DOMAIN_SEPARATOR : _calculateDomainSeparator(chainId, bytes(_name)); } function _calculateDomainSeparator(uint256 chainId, bytes memory name_) private view returns (bytes32) { return keccak256( abi.encode( keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), keccak256(name_), keccak256("1"), chainId, address(this) ) ); } /////////////////////////////////////////// ERC165 /////////////////////////////////////// /// @dev See {IERC165-supportsInterface}. function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return interfaceId == type(IERC165).interfaceId || interfaceId == type(IERC20).interfaceId || interfaceId == type(IERC20Detailed).interfaceId || interfaceId == type(IERC20Metadata).interfaceId || interfaceId == type(IERC20Allowance).interfaceId || interfaceId == type(IERC20BatchTransfers).interfaceId || interfaceId == type(IERC20SafeTransfers).interfaceId || interfaceId == type(IERC20Permit).interfaceId; } /////////////////////////////////////////// ERC20Detailed /////////////////////////////////////// /// @dev See {IERC20Detailed-name}. function name() external view override returns (string memory) { return _name; } /// @dev See {IERC20Detailed-symbol}. function symbol() external view override returns (string memory) { return _symbol; } /// @dev See {IERC20Detailed-decimals}. function decimals() external view override returns (uint8) { return _decimals; } /////////////////////////////////////////// ERC20Metadata /////////////////////////////////////// /// @dev See {IERC20Metadata-tokenURI}. function tokenURI() external view override returns (string memory) { return _tokenURI; } /////////////////////////////////////////// ERC20 /////////////////////////////////////// /// @dev See {IERC20-totalSupply}. function totalSupply() external view override returns (uint256) { return _totalSupply; } /// @dev See {IERC20-balanceOf}. function balanceOf(address account) external view override returns (uint256) { return _balances[account]; } /// @dev See {IERC20-allowance}. function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /// @dev See {IERC20-approve}. function approve(address spender, uint256 value) external virtual override returns (bool) { _approve(_msgSender(), spender, value); return true; } /////////////////////////////////////////// ERC20 Allowance /////////////////////////////////////// /// @dev See {IERC20Allowance-increaseAllowance}. function increaseAllowance(address spender, uint256 addedValue) external virtual override returns (bool) { require(spender != address(0), "ERC20: zero address spender"); address owner = _msgSender(); uint256 allowance_ = _allowances[owner][spender]; if (addedValue != 0) { uint256 newAllowance = allowance_ + addedValue; require(newAllowance > allowance_, "ERC20: allowance overflow"); _allowances[owner][spender] = newAllowance; allowance_ = newAllowance; } emit Approval(owner, spender, allowance_); return true; } /// @dev See {IERC20Allowance-decreaseAllowance}. function decreaseAllowance(address spender, uint256 subtractedValue) external virtual override returns (bool) { require(spender != address(0), "ERC20: zero address spender"); _decreaseAllowance(_msgSender(), spender, subtractedValue); return true; } /// @dev See {IERC20-transfer}. function transfer(address to, uint256 value) external virtual override returns (bool) { _transfer(_msgSender(), to, value); return true; } /// @dev See {IERC20-transferFrom}. function transferFrom( address from, address to, uint256 value ) external virtual override returns (bool) { _transferFrom(_msgSender(), from, to, value); return true; } /////////////////////////////////////////// ERC20MultiTransfer /////////////////////////////////////// /// @dev See {IERC20MultiTransfer-multiTransfer(address[],uint256[])}. function batchTransfer(address[] calldata recipients, uint256[] calldata values) external virtual override returns (bool) { uint256 length = recipients.length; require(length == values.length, "ERC20: inconsistent arrays"); address sender = _msgSender(); uint256 balance = _balances[sender]; uint256 totalValue; uint256 selfTransferTotalValue; for (uint256 i; i != length; ++i) { address to = recipients[i]; require(to != address(0), "ERC20: to zero address"); uint256 value = values[i]; if (value != 0) { uint256 newTotalValue = totalValue + value; require(newTotalValue > totalValue, "ERC20: values overflow"); totalValue = newTotalValue; if (sender != to) { _balances[to] += value; } else { require(value <= balance, "ERC20: insufficient balance"); selfTransferTotalValue += value; // cannot overflow as 'selfTransferTotalValue <= totalValue' is always true } } emit Transfer(sender, to, value); } if (totalValue != 0 && totalValue != selfTransferTotalValue) { uint256 newBalance = balance - totalValue; require(newBalance < balance, "ERC20: insufficient balance"); // balance must be sufficient, including self-transfers _balances[sender] = newBalance + selfTransferTotalValue; // do not deduct self-transfers from the sender balance } return true; } /// @dev See {IERC20MultiTransfer-multiTransferFrom(address,address[],uint256[])}. function batchTransferFrom( address from, address[] calldata recipients, uint256[] calldata values ) external virtual override returns (bool) { uint256 length = recipients.length; require(length == values.length, "ERC20: inconsistent arrays"); uint256 balance = _balances[from]; uint256 totalValue; uint256 selfTransferTotalValue; for (uint256 i; i != length; ++i) { address to = recipients[i]; require(to != address(0), "ERC20: to zero address"); uint256 value = values[i]; if (value != 0) { uint256 newTotalValue = totalValue + value; require(newTotalValue > totalValue, "ERC20: values overflow"); totalValue = newTotalValue; if (from != to) { _balances[to] += value; } else { require(value <= balance, "ERC20: insufficient balance"); selfTransferTotalValue += value; // cannot overflow as 'selfTransferTotalValue <= totalValue' is always true } } emit Transfer(from, to, value); } if (totalValue != 0 && totalValue != selfTransferTotalValue) { uint256 newBalance = balance - totalValue; require(newBalance < balance, "ERC20: insufficient balance"); // balance must be sufficient, including self-transfers _balances[from] = newBalance + selfTransferTotalValue; // do not deduct self-transfers from the sender balance } address sender = _msgSender(); if (from != sender) { _decreaseAllowance(from, sender, totalValue); } return true; } /////////////////////////////////////////// ERC20SafeTransfers /////////////////////////////////////// /// @dev See {IERC20Safe-safeTransfer(address,uint256,bytes)}. function safeTransfer( address to, uint256 amount, bytes calldata data ) external virtual override returns (bool) { address sender = _msgSender(); _transfer(sender, to, amount); if (to.isContract()) { require(IERC20Receiver(to).onERC20Received(sender, sender, amount, data) == type(IERC20Receiver).interfaceId, "ERC20: transfer refused"); } return true; } /// @dev See {IERC20Safe-safeTransferFrom(address,address,uint256,bytes)}. function safeTransferFrom( address from, address to, uint256 amount, bytes calldata data ) external virtual override returns (bool) { address sender = _msgSender(); _transferFrom(sender, from, to, amount); if (to.isContract()) { require(IERC20Receiver(to).onERC20Received(sender, from, amount, data) == type(IERC20Receiver).interfaceId, "ERC20: transfer refused"); } return true; } /////////////////////////////////////////// ERC20Permit /////////////////////////////////////// /// @dev See {IERC2612-permit(address,address,uint256,uint256,uint8,bytes32,bytes32)}. function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external virtual override { require(owner != address(0), "ERC20: zero address owner"); require(block.timestamp <= deadline, "ERC20: expired permit"); bytes32 hashStruct = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)); bytes32 hash = keccak256(abi.encodePacked("\x19\x01", DOMAIN_SEPARATOR(), hashStruct)); address signer = ecrecover(hash, v, r, s); require(signer == owner, "ERC20: invalid permit"); _approve(owner, spender, value); } /////////////////////////////////////////// Internal Functions /////////////////////////////////////// function _approve( address owner, address spender, uint256 value ) internal { require(spender != address(0), "ERC20: zero address spender"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } function _decreaseAllowance( address owner, address spender, uint256 subtractedValue ) internal { uint256 allowance_ = _allowances[owner][spender]; if (allowance_ != type(uint256).max && subtractedValue != 0) { // save gas when allowance is maximal by not reducing it (see https://github.com/ethereum/EIPs/issues/717) uint256 newAllowance = allowance_ - subtractedValue; require(newAllowance < allowance_, "ERC20: insufficient allowance"); _allowances[owner][spender] = newAllowance; allowance_ = newAllowance; } emit Approval(owner, spender, allowance_); } function _transfer( address from, address to, uint256 value ) internal virtual { require(to != address(0), "ERC20: to zero address"); if (value != 0) { uint256 balance = _balances[from]; uint256 newBalance = balance - value; require(newBalance < balance, "ERC20: insufficient balance"); if (from != to) { _balances[from] = newBalance; _balances[to] += value; } } emit Transfer(from, to, value); } function _transferFrom( address sender, address from, address to, uint256 value ) internal { _transfer(from, to, value); if (from != sender) { _decreaseAllowance(from, sender, value); } } function _mint(address to, uint256 value) internal virtual { require(to != address(0), "ERC20: zero address"); uint256 supply = _totalSupply; if (value != 0) { uint256 newSupply = supply + value; require(newSupply > supply, "ERC20: supply overflow"); _totalSupply = newSupply; _balances[to] += value; // balance cannot overflow if supply does not } emit Transfer(address(0), to, value); } function _batchMint(address[] memory recipients, uint256[] memory values) internal virtual { uint256 length = recipients.length; require(length == values.length, "ERC20: inconsistent arrays"); uint256 totalValue; for (uint256 i; i != length; ++i) { address to = recipients[i]; require(to != address(0), "ERC20: zero address"); uint256 value = values[i]; if (value != 0) { uint256 newTotalValue = totalValue + value; require(newTotalValue > totalValue, "ERC20: values overflow"); totalValue = newTotalValue; _balances[to] += value; // balance cannot overflow if supply does not } emit Transfer(address(0), to, value); } if (totalValue != 0) { uint256 supply = _totalSupply; uint256 newSupply = supply + totalValue; require(newSupply > supply, "ERC20: supply overflow"); _totalSupply = newSupply; } } function _burn(address from, uint256 value) internal virtual { if (value != 0) { uint256 balance = _balances[from]; uint256 newBalance = balance - value; require(newBalance < balance, "ERC20: insufficient balance"); _balances[from] = newBalance; _totalSupply -= value; // will not underflow if balance does not } emit Transfer(from, address(0), value); } function _burnFrom(address from, uint256 value) internal virtual { _burn(from, value); address sender = _msgSender(); if (from != sender) { _decreaseAllowance(from, sender, value); } } function _batchBurnFrom(address[] memory owners, uint256[] memory values) internal virtual { uint256 length = owners.length; require(length == values.length, "ERC20: inconsistent arrays"); address sender = _msgSender(); uint256 totalValue; for (uint256 i; i != length; ++i) { address from = owners[i]; uint256 value = values[i]; if (value != 0) { uint256 balance = _balances[from]; uint256 newBalance = balance - value; require(newBalance < balance, "ERC20: insufficient balance"); _balances[from] = newBalance; totalValue += value; // totalValue cannot overflow if the individual balances do not underflow } emit Transfer(from, address(0), value); if (from != sender) { _decreaseAllowance(from, sender, value); } } if (totalValue != 0) { _totalSupply -= totalValue; // _totalSupply cannot underfow as balances do not underflow } } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /* * Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner. */ abstract contract ManagedIdentity { function _msgSender() internal view virtual returns (address payable) { return msg.sender; } function _msgData() internal view virtual returns (bytes memory) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @dev Interface of the ERC165 standard, as defined in the * https://eips.ethereum.org/EIPS/eip-165. */ interface IERC165 { /** * @dev Returns true if this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); }
// SPDX-License-Identifier: MIT // Partially derived from OpenZeppelin: // https://github.com/OpenZeppelin/openzeppelin-contracts/blob/406c83649bd6169fc1b578e08506d78f0873b276/contracts/utils/Address.sol pragma solidity >=0.7.6 <0.8.0; /** * @dev Upgrades the address type to check if it is a contract. */ library AddressIsContract { /** * @dev Returns true if `account` is a contract. * * [IMPORTANT] * ==== * It is unsafe to assume that an address for which this function returns * false is an externally-owned account (EOA) and not a contract. * * Among others, `isContract` will return false for the following * types of addresses: * * - an externally-owned account * - a contract in construction * - an address where a contract will be created * - an address where a contract lived, but was destroyed * ==== */ function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; assembly { size := extcodesize(account) } return size > 0; } }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, basic interface * @dev See https://eips.ethereum.org/EIPS/eip-20 * Note: The ERC-165 identifier for this interface is 0x36372b07. */ interface IERC20 { /** * @dev Emitted when tokens are transferred, including zero value transfers. * @param _from The account where the transferred tokens are withdrawn from. * @param _to The account where the transferred tokens are deposited to. * @param _value The amount of tokens being transferred. */ event Transfer(address indexed _from, address indexed _to, uint256 _value); /** * @dev Emitted when a successful call to {IERC20-approve(address,uint256)} is made. * @param _owner The account granting an allowance to `_spender`. * @param _spender The account being granted an allowance from `_owner`. * @param _value The allowance amount being granted. */ event Approval(address indexed _owner, address indexed _spender, uint256 _value); /** * @notice Returns the total token supply. * @return The total token supply. */ function totalSupply() external view returns (uint256); /** * @notice Returns the account balance of another account with address `owner`. * @param owner The account whose balance will be returned. * @return The account balance of another account with address `owner`. */ function balanceOf(address owner) external view returns (uint256); /** * Transfers `value` amount of tokens to address `to`. * @dev Reverts if `to` is the zero address. * @dev Reverts if the sender does not have enough balance. * @dev Emits an {IERC20-Transfer} event. * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event. * @param to The receiver account. * @param value The amount of tokens to transfer. * @return True if the transfer succeeds, false otherwise. */ function transfer(address to, uint256 value) external returns (bool); /** * @notice Transfers `value` amount of tokens from address `from` to address `to` via the approval mechanism. * @dev Reverts if `to` is the zero address. * @dev Reverts if the sender is not `from` and has not been approved by `from` for at least `value`. * @dev Reverts if `from` does not have at least `value` of balance. * @dev Emits an {IERC20-Transfer} event. * @dev Transfers of 0 values are treated as normal transfers and fire the {IERC20-Transfer} event. * @param from The emitter account. * @param to The receiver account. * @param value The amount of tokens to transfer. * @return True if the transfer succeeds, false otherwise. */ function transferFrom( address from, address to, uint256 value ) external returns (bool); /** * Sets `value` as the allowance from the caller to `spender`. * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * @dev Reverts if `spender` is the zero address. * @dev Emits the {IERC20-Approval} event. * @param spender The account being granted the allowance by the message caller. * @param value The allowance amount to grant. * @return True if the approval succeeds, false otherwise. */ function approve(address spender, uint256 value) external returns (bool); /** * Returns the amount which `spender` is allowed to spend on behalf of `owner`. * @param owner The account that has granted an allowance to `spender`. * @param spender The account that was granted an allowance by `owner`. * @return The amount which `spender` is allowed to spend on behalf of `owner`. */ function allowance(address owner, address spender) external view returns (uint256); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, optional extension: Detailed * See https://eips.ethereum.org/EIPS/eip-20 * Note: the ERC-165 identifier for this interface is 0xa219a025. */ interface IERC20Detailed { /** * Returns the name of the token. E.g. "My Token". * @return The name of the token. */ function name() external view returns (string memory); /** * Returns the symbol of the token. E.g. "HIX". * @return The symbol of the token. */ function symbol() external view returns (string memory); /** * Returns the number of decimals used to display the balances. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5,05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between Ether and Wei. * * NOTE: This information is only used for _display_ purposes: it does not impact the arithmetic of the contract. * @return The number of decimals used to display the balances. */ function decimals() external view returns (uint8); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, optional extension: Allowance * See https://eips.ethereum.org/EIPS/eip-20 * Note: the ERC-165 identifier for this interface is 0xd5b86388. */ interface IERC20Allowance { /** * Increases the allowance granted by the sender to `spender` by `value`. * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * @dev Reverts if `spender` is the zero address. * @dev Reverts if `spender`'s allowance overflows. * @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`. * @param spender The account whose allowance is being increased by the message caller. * @param value The allowance amount increase. * @return True if the allowance increase succeeds, false otherwise. */ function increaseAllowance(address spender, uint256 value) external returns (bool); /** * Decreases the allowance granted by the sender to `spender` by `value`. * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * @dev Reverts if `spender` is the zero address. * @dev Reverts if `spender` has an allowance with the message caller for less than `value`. * @dev Emits an {IERC20-Approval} event with an updated allowance for `spender`. * @param spender The account whose allowance is being decreased by the message caller. * @param value The allowance amount decrease. * @return True if the allowance decrease succeeds, false otherwise. */ function decreaseAllowance(address spender, uint256 value) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, optional extension: Safe Transfers * Note: the ERC-165 identifier for this interface is 0x53f41a97. */ interface IERC20SafeTransfers { /** * Transfers tokens from the caller to `to`. If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it. * @dev Reverts if `to` is the zero address. * @dev Reverts if `value` is greater than the sender's balance. * @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`. * @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value. * @dev Emits an {IERC20-Transfer} event. * @param to The address for the tokens to be transferred to. * @param amount The amount of tokens to be transferred. * @param data Optional additional data with no specified format, to be passed to the receiver contract. * @return true. */ function safeTransfer( address to, uint256 amount, bytes calldata data ) external returns (bool); /** * Transfers tokens from `from` to another address, using the allowance mechanism. * If this address is a contract, then calls `onERC20Received(address,address,uint256,bytes)` on it. * @dev Reverts if `to` is the zero address. * @dev Reverts if `value` is greater than `from`'s balance. * @dev Reverts if the sender does not have at least `value` allowance by `from`. * @dev Reverts if `to` is a contract which does not implement `onERC20Received(address,address,uint256,bytes)`. * @dev Reverts if `to` is a contract and the call to `onERC20Received(address,address,uint256,bytes)` returns a wrong value. * @dev Emits an {IERC20-Transfer} event. * @param from The address which owns the tokens to be transferred. * @param to The address for the tokens to be transferred to. * @param amount The amount of tokens to be transferred. * @param data Optional additional data with no specified format, to be passed to the receiver contract. * @return true. */ function safeTransferFrom( address from, address to, uint256 amount, bytes calldata data ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, optional extension: Multi Transfers * Note: the ERC-165 identifier for this interface is 0xd5b86388. */ interface IERC20BatchTransfers { /** * Moves multiple `amounts` tokens from the caller's account to each of `recipients`. * @dev Reverts if `recipients` and `amounts` have different lengths. * @dev Reverts if one of `recipients` is the zero address. * @dev Reverts if the caller has an insufficient balance. * @dev Emits an {IERC20-Transfer} event for each individual transfer. * @param recipients the list of recipients to transfer the tokens to. * @param amounts the amounts of tokens to transfer to each of `recipients`. * @return a boolean value indicating whether the operation succeeded. */ function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external returns (bool); /** * Moves multiple `amounts` tokens from an account to each of `recipients`, using the approval mechanism. * @dev Reverts if `recipients` and `amounts` have different lengths. * @dev Reverts if one of `recipients` is the zero address. * @dev Reverts if `from` has an insufficient balance. * @dev Reverts if the sender does not have at least the sum of all `amounts` as allowance by `from`. * @dev Emits an {IERC20-Transfer} event for each individual transfer. * @dev Emits an {IERC20-Approval} event. * @param from The address which owns the tokens to be transferred. * @param recipients the list of recipients to transfer the tokens to. * @param amounts the amounts of tokens to transfer to each of `recipients`. * @return a boolean value indicating whether the operation succeeded. */ function batchTransferFrom( address from, address[] calldata recipients, uint256[] calldata amounts ) external returns (bool); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, ERC1046 optional extension: Metadata * See https://eips.ethereum.org/EIPS/eip-1046 * Note: the ERC-165 identifier for this interface is 0x3c130d90. */ interface IERC20Metadata { /** * Returns a distinct Uniform Resource Identifier (URI) for the token metadata. * @return a distinct Uniform Resource Identifier (URI) for the token metadata. */ function tokenURI() external view returns (string memory); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, ERC2612 optional extension: permit – 712-signed approvals * @dev Interface for allowing ERC20 approvals to be made via ECDSA `secp256k1` signatures. * See https://eips.ethereum.org/EIPS/eip-2612 * Note: the ERC-165 identifier for this interface is 0x9d8ff7da. */ interface IERC20Permit { /** * Sets `value` as the allowance of `spender` over the tokens of `owner`, given `owner` account's signed permit. * @dev WARNING: The standard ERC-20 race condition for approvals applies to `permit()` as well: https://swcregistry.io/docs/SWC-114 * @dev Reverts if `owner` is the zero address. * @dev Reverts if the current blocktime is > `deadline`. * @dev Reverts if `r`, `s`, and `v` is not a valid `secp256k1` signature from `owner`. * @dev Emits an {IERC20-Approval} event. * @param owner The token owner granting the allowance to `spender`. * @param spender The token spender being granted the allowance by `owner`. * @param value The token amount of the allowance. * @param deadline The deadline from which the permit signature is no longer valid. * @param v Permit signature v parameter * @param r Permit signature r parameter. * @param s Permis signature s parameter. */ function permit( address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s ) external; /** * Returns the current permit nonce of `owner`. * @param owner the address to check the nonce of. * @return the current permit nonce of `owner`. */ function nonces(address owner) external view returns (uint256); /** * Returns the EIP-712 encoded hash struct of the domain-specific information for permits. * * @dev A common ERC-20 permit implementation choice for the `DOMAIN_SEPARATOR` is: * * keccak256( * abi.encode( * keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"), * keccak256(bytes(name)), * keccak256(bytes(version)), * chainId, * address(this))) * * where * - `name` (string) is the ERC-20 token name. * - `version` (string) refers to the ERC-20 token contract version. * - `chainId` (uint256) is the chain ID to which the ERC-20 token contract is deployed to. * - `verifyingContract` (address) is the ERC-20 token contract address. * * @return the EIP-712 encoded hash struct of the domain-specific information for permits. */ // solhint-disable-next-line func-name-mixedcase function DOMAIN_SEPARATOR() external view returns (bytes32); }
// SPDX-License-Identifier: MIT pragma solidity >=0.7.6 <0.8.0; /** * @title ERC20 Token Standard, Receiver * See https://eips.ethereum.org/EIPS/eip-20 * Note: the ERC-165 identifier for this interface is 0x4fc35859. */ interface IERC20Receiver { /** * Handles the receipt of ERC20 tokens. * @param sender The initiator of the transfer. * @param from The address which transferred the tokens. * @param value The amount of tokens transferred. * @param data Optional additional data with no specified format. * @return bytes4 `bytes4(keccak256("onERC20Received(address,address,uint256,bytes)"))` */ function onERC20Received( address sender, address from, uint256 value, bytes calldata data ) external returns (bytes4); }
{ "optimizer": { "enabled": true, "runs": 2000 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "libraries": {} }
Contract Security Audit
- Solidified- September 3rd 2021 - Security Audit Report
[{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"},{"internalType":"string","name":"tokenURI_","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_owner","type":"address"},{"indexed":true,"internalType":"address","name":"_spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_from","type":"address"},{"indexed":true,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"batchTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"values","type":"uint256[]"}],"name":"batchTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deploymentChainId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"safeTransferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
60e06040523480156200001157600080fd5b506040516200244838038062002448833981810160405260608110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82518660208202830111640100000000821117156200008c57600080fd5b82525081516020918201928201910280838360005b83811015620000bb578181015183820152602001620000a1565b5050505090500160405260200180516040519392919084640100000000821115620000e557600080fd5b908301906020820185811115620000fb57600080fd5b82518660208202830111640100000000821117156200011957600080fd5b82525081516020918201928201910280838360005b83811015620001485781810151838201526020016200012e565b50505050905001604052602001805160405193929190846401000000008211156200017257600080fd5b9083019060208201858111156200018857600080fd5b8251640100000000811182820188101715620001a357600080fd5b82525081516020918201929091019080838360005b83811015620001d2578181015183820152602001620001b8565b50505050905090810190601f168015620002005780820380516001836020036101000a031916815260200191505b5060408181018152600480835263444f534560e01b602080850182815284518086019095529284528301528251929550909350601292508591620002479160019162000595565b5082516200025d90600290602086019062000595565b507fff0000000000000000000000000000000000000000000000000000000000000060f883901b1660c05280516200029d90600390602084019062000595565b50466080819052620002b08186620002d0565b60a05250620002c79350869250859150506200035a565b50505062000641565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b815181518114620003b2576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6000805b82811462000527576000858281518110620003cd57fe5b6020026020010151905060006001600160a01b0316816001600160a01b0316141562000440576040805162461bcd60e51b815260206004820152601360248201527f45524332303a207a65726f206164647265737300000000000000000000000000604482015290519081900360640190fd5b60008583815181106200044f57fe5b6020026020010151905080600014620004db57838101848111620004ba576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b6001600160a01b038316600090815260046020526040902080548301905593505b6040805182815290516001600160a01b038416916000917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050600101620003b6565b5080156200058f576006548181018181116200058a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20737570706c79206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b600655505b50505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620005cd576000855562000618565b82601f10620005e857805160ff191683800117855562000618565b8280016001018555821562000618579182015b8281111562000618578251825591602001919060010190620005fb565b50620006269291506200062a565b5090565b5b808211156200062657600081556001016200062b565b60805160a05160c05160f81c611dd26200067660003980610962525080610a4c52508061098952806115355250611dd26000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a9059cbb1161008c578063d505accf11610066578063d505accf146105e2578063dd62ed3e14610635578063eb7955491461066357610177565b8063a9059cbb1461051e578063b88d4fde1461054a578063cd0d0096146105da57610177565b806388d695b2116100bd57806388d695b21461042857806395d89b41146104ea578063a457c2d7146104f257610177565b806370a08231146103dc5780637ecebe001461040257610177565b8063313ce5671161012f578063395093511161011457806339509351146102d65780633c130d90146103025780634885b2541461030a57610177565b8063313ce567146102b05780633644e515146102ce57610177565b8063095ea7b311610160578063095ea7b31461023457806318160ddd1461026057806323b872dd1461027a57610177565b806301ffc9a71461017c57806306fdde03146101b7575b600080fd5b6101a36004803603602081101561019257600080fd5b50356001600160e01b0319166106e8565b604080519115158252519081900360200190f35b6101bf610889565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f95781810151838201526020016101e1565b50505050905090810190601f1680156102265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561024a57600080fd5b506001600160a01b03813516906020013561091e565b61026861093b565b60408051918252519081900360200190f35b6101a36004803603606081101561029057600080fd5b506001600160a01b03813581169160208101359091169060400135610941565b6102b8610960565b6040805160ff9092168252519081900360200190f35b610268610984565b6101a3600480360360408110156102ec57600080fd5b506001600160a01b038135169060200135610a72565b6101bf610be0565b6101a36004803603606081101561032057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561034b57600080fd5b82018360208201111561035d57600080fd5b8035906020019184602083028401116401000000008311171561037f57600080fd5b91939092909160208101903564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460208302840111640100000000831117156103d157600080fd5b509092509050610c41565b610268600480360360208110156103f257600080fd5b50356001600160a01b0316610f75565b6102686004803603602081101561041857600080fd5b50356001600160a01b0316610f90565b6101a36004803603604081101561043e57600080fd5b81019060208101813564010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184602083028401116401000000008311171561048d57600080fd5b9193909290916020810190356401000000008111156104ab57600080fd5b8201836020820111156104bd57600080fd5b803590602001918460208302840111640100000000831117156104df57600080fd5b509092509050610fa2565b6101bf6112b1565b6101a36004803603604081101561050857600080fd5b506001600160a01b03813516906020013561130f565b6101a36004803603604081101561053457600080fd5b506001600160a01b03813516906020013561137e565b6101a36004803603608081101561056057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460018302840111640100000000831117156105cf57600080fd5b509092509050611392565b610268611533565b610633600480360360e08110156105f857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611557565b005b6102686004803603604081101561064b57600080fd5b506001600160a01b03813581169160200135166117d6565b6101a36004803603606081101561067957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460018302840111640100000000831117156106dd57600080fd5b509092509050611801565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061074b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061077f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806107b357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806107e757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061081b57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061084f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061088357506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b6119a0565b84846119a4565b50600192915050565b60065490565b600061095661094e6119a0565b858585611a61565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000000090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610a4a5760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a4593859391929091830182828015610a3b5780601f10610a1057610100808354040283529160200191610a3b565b820191906000526020600020905b815481529060010190602001808311610a1e57829003601f168201915b5050505050611a96565b610a6c565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b60006001600160a01b038316610acf576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610ad96119a0565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610b8a57808401818111610b5f576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b600083828114610c98576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610eaa5760008a8a83818110610cca57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610d44576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610d5257fe5b90506020020135905080600014610e5557848101858111610dba576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610df9576001600160a01b0383166000908152600460205260409020805483019055610e53565b86821115610e4e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610cb5565b508115801590610eba5750808214155b15610f3457818303838110610f16576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610f3e6119a0565b9050806001600160a01b03168b6001600160a01b031614610f6457610f648b8285611b20565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b600083828114610ff9576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006110036119a0565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112175760008b8b8381811061103757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156110b1576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106110bf57fe5b905060200201359050806000146111c257848101858111611127576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611166576001600160a01b03831660009081526004602052604090208054830190556111c0565b868211156111bb576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611022565b5081158015906112275750808214155b156112a157818303838110611283576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b60006001600160a01b03831661136c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109326113776119a0565b8484611b20565b600061093261138b6119a0565b8484611c2f565b60008061139d6119a0565b90506113ab81888888611a61565b6113bd866001600160a01b0316611d96565b15611526577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60208110156114c857600080fd5b50516001600160e01b03191614611526576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0387166115b2576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611607576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e09093019093528151919092012090611699610984565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561174d573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146117bf576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6117ca8a8a8a6119a4565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061180c6119a0565b9050611819818787611c2f565b61182b866001600160a01b0316611d96565b15611994577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050506040513d602081101561193657600080fd5b50516001600160e01b03191614611994576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b3390565b6001600160a01b0382166119ff576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611a6c838383611c2f565b836001600160a01b0316836001600160a01b031614611a9057611a90838583611b20565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611b5757508115155b15611bde57818103818110611bb3576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611c8a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015611d46576001600160a01b038316600090815260046020526040902054818103818110611d00576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614611d43576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220cb81fecfe41671ec5e4c19edfe1a4b8b62f7735abbb613e3cc1e62a06857f8e564736f6c634300070600330000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000059ce2e351e36f276bfced3f63653249207edcb4000000000000000000000000da05ba1469c4fb2565f694afe0eae7487d4961d1000000000000000000000000b8a6b7532f6bccf4a7fb5afe4b7bff4f077c7a5e0000000000000000000000002ac2d05c9bcf284871eaab8e9bc9bea742c6fd900000000000000000000000002eadbd0ceba80683e3c2100165e16716bf50b73500000000000000000000000066481835d1111f597c2ad6c61ff94eb216ecd3fb000000000000000000000000100cbdf398f29bdd067c75e82a4248696178082d0000000000000000000000003c25267f130a2e5c27fb2eb2e1f2c094a015613d000000000000000000000000449cee63728e85fca560590026ed4cd88f7bf76f00000000000000000000000059bbf14b028f5b5bd58f5fc8888224a3c0d817230000000000000000000000000b305078dbbcd8615ce92c790f1c6f4ed9dd0cba000000000000000000000000f692e7b7e16bb755b9a72510fc9cb7285b6e7ac80000000000000000000000008c4341c904fe91e02c7575a70027702b506a2a4e000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000024306c4097859c43c000000000000000000000000000000000000000000000000084595161401484a0000000000000000000000000000000000000000000000006ed79a8e3f4462460000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000006ed79a8e3f4462460000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000019d971e4fe8401e74000000000000000000000000000000000000000000000000e0fe3d8bb9bc7b10000000000000000000000000000000000000000000000001363156bbee3016d70000000000000000000000000000000000000000000000001f04ef12cb04cf15800000000000000000000000000000000000000000000001172c67a9232b47c1800000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f6170692e646f7365746f6b656e2e636f6d2f6a736f6e0000
Deployed Bytecode
0x608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a9059cbb1161008c578063d505accf11610066578063d505accf146105e2578063dd62ed3e14610635578063eb7955491461066357610177565b8063a9059cbb1461051e578063b88d4fde1461054a578063cd0d0096146105da57610177565b806388d695b2116100bd57806388d695b21461042857806395d89b41146104ea578063a457c2d7146104f257610177565b806370a08231146103dc5780637ecebe001461040257610177565b8063313ce5671161012f578063395093511161011457806339509351146102d65780633c130d90146103025780634885b2541461030a57610177565b8063313ce567146102b05780633644e515146102ce57610177565b8063095ea7b311610160578063095ea7b31461023457806318160ddd1461026057806323b872dd1461027a57610177565b806301ffc9a71461017c57806306fdde03146101b7575b600080fd5b6101a36004803603602081101561019257600080fd5b50356001600160e01b0319166106e8565b604080519115158252519081900360200190f35b6101bf610889565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f95781810151838201526020016101e1565b50505050905090810190601f1680156102265780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a36004803603604081101561024a57600080fd5b506001600160a01b03813516906020013561091e565b61026861093b565b60408051918252519081900360200190f35b6101a36004803603606081101561029057600080fd5b506001600160a01b03813581169160208101359091169060400135610941565b6102b8610960565b6040805160ff9092168252519081900360200190f35b610268610984565b6101a3600480360360408110156102ec57600080fd5b506001600160a01b038135169060200135610a72565b6101bf610be0565b6101a36004803603606081101561032057600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561034b57600080fd5b82018360208201111561035d57600080fd5b8035906020019184602083028401116401000000008311171561037f57600080fd5b91939092909160208101903564010000000081111561039d57600080fd5b8201836020820111156103af57600080fd5b803590602001918460208302840111640100000000831117156103d157600080fd5b509092509050610c41565b610268600480360360208110156103f257600080fd5b50356001600160a01b0316610f75565b6102686004803603602081101561041857600080fd5b50356001600160a01b0316610f90565b6101a36004803603604081101561043e57600080fd5b81019060208101813564010000000081111561045957600080fd5b82018360208201111561046b57600080fd5b8035906020019184602083028401116401000000008311171561048d57600080fd5b9193909290916020810190356401000000008111156104ab57600080fd5b8201836020820111156104bd57600080fd5b803590602001918460208302840111640100000000831117156104df57600080fd5b509092509050610fa2565b6101bf6112b1565b6101a36004803603604081101561050857600080fd5b506001600160a01b03813516906020013561130f565b6101a36004803603604081101561053457600080fd5b506001600160a01b03813516906020013561137e565b6101a36004803603608081101561056057600080fd5b6001600160a01b0382358116926020810135909116916040820135919081019060808101606082013564010000000081111561059b57600080fd5b8201836020820111156105ad57600080fd5b803590602001918460018302840111640100000000831117156105cf57600080fd5b509092509050611392565b610268611533565b610633600480360360e08110156105f857600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611557565b005b6102686004803603604081101561064b57600080fd5b506001600160a01b03813581169160200135166117d6565b6101a36004803603606081101561067957600080fd5b6001600160a01b03823516916020810135918101906060810160408201356401000000008111156106a957600080fd5b8201836020820111156106bb57600080fd5b803590602001918460018302840111640100000000831117156106dd57600080fd5b509092509050611801565b60006001600160e01b031982167f01ffc9a700000000000000000000000000000000000000000000000000000000148061074b57506001600160e01b031982167f36372b0700000000000000000000000000000000000000000000000000000000145b8061077f57506001600160e01b031982167fa219a02500000000000000000000000000000000000000000000000000000000145b806107b357506001600160e01b031982167f3c130d9000000000000000000000000000000000000000000000000000000000145b806107e757506001600160e01b031982167f9d07518600000000000000000000000000000000000000000000000000000000145b8061081b57506001600160e01b031982167fc05327e600000000000000000000000000000000000000000000000000000000145b8061084f57506001600160e01b031982167f53f41a9700000000000000000000000000000000000000000000000000000000145b8061088357506001600160e01b031982167f9d8ff7da00000000000000000000000000000000000000000000000000000000145b92915050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b820191906000526020600020905b8154815290600101906020018083116108f757829003601f168201915b5050505050905090565b600061093261092b6119a0565b84846119a4565b50600192915050565b60065490565b600061095661094e6119a0565b858585611a61565b5060019392505050565b7f000000000000000000000000000000000000000000000000000000000000001290565b6000467f00000000000000000000000000000000000000000000000000000000000000018114610a4a5760018054604080516020600284861615610100026000190190941693909304601f8101849004840282018401909252818152610a4593859391929091830182828015610a3b5780601f10610a1057610100808354040283529160200191610a3b565b820191906000526020600020905b815481529060010190602001808311610a1e57829003601f168201915b5050505050611a96565b610a6c565b7f3bc6379b4ec5664202a945e06bf4983438bcaf0d223bc8b9d1d79ed7aa06f6015b91505090565b60006001600160a01b038316610acf576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6000610ad96119a0565b6001600160a01b038082166000908152600560209081526040808320938916835292905220549091508315610b8a57808401818111610b5f576040805162461bcd60e51b815260206004820152601960248201527f45524332303a20616c6c6f77616e6365206f766572666c6f7700000000000000604482015290519081900360640190fd5b6001600160a01b038084166000908152600560209081526040808320938a1683529290522081905590505b846001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3506001949350505050565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b600083828114610c98576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b6001600160a01b0387166000908152600460205260408120549080805b848114610eaa5760008a8a83818110610cca57fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b03161415610d44576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b6000898984818110610d5257fe5b90506020020135905080600014610e5557848101858111610dba576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b03168e6001600160a01b031614610df9576001600160a01b0383166000908152600460205260409020805483019055610e53565b86821115610e4e576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b03168d6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101610cb5565b508115801590610eba5750808214155b15610f3457818303838110610f16576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038b16600090815260046020526040902090820190555b6000610f3e6119a0565b9050806001600160a01b03168b6001600160a01b031614610f6457610f648b8285611b20565b5060019a9950505050505050505050565b6001600160a01b031660009081526004602052604090205490565b60006020819052908152604090205481565b600083828114610ff9576040805162461bcd60e51b815260206004820152601a60248201527f45524332303a20696e636f6e73697374656e7420617272617973000000000000604482015290519081900360640190fd5b60006110036119a0565b6001600160a01b03811660009081526004602052604081205491925080805b8581146112175760008b8b8381811061103757fe5b905060200201356001600160a01b0316905060006001600160a01b0316816001600160a01b031614156110b1576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b60008a8a848181106110bf57fe5b905060200201359050806000146111c257848101858111611127576040805162461bcd60e51b815260206004820152601660248201527f45524332303a2076616c756573206f766572666c6f7700000000000000000000604482015290519081900360640190fd5b809550826001600160a01b0316886001600160a01b031614611166576001600160a01b03831660009081526004602052604090208054830190556111c0565b868211156111bb576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b938101935b505b816001600160a01b0316876001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050600101611022565b5081158015906112275750808214155b156112a157818303838110611283576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b6001600160a01b038516600090815260046020526040902090820190555b5060019998505050505050505050565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156109145780601f106108e957610100808354040283529160200191610914565b60006001600160a01b03831661136c576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6109326113776119a0565b8484611b20565b600061093261138b6119a0565b8484611c2f565b60008061139d6119a0565b90506113ab81888888611a61565b6113bd866001600160a01b0316611d96565b15611526577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc35859838a8989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561149e57600080fd5b505af11580156114b2573d6000803e3d6000fd5b505050506040513d60208110156114c857600080fd5b50516001600160e01b03191614611526576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b5060019695505050505050565b7f000000000000000000000000000000000000000000000000000000000000000181565b6001600160a01b0387166115b2576040805162461bcd60e51b815260206004820152601960248201527f45524332303a207a65726f2061646472657373206f776e657200000000000000604482015290519081900360640190fd5b83421115611607576040805162461bcd60e51b815260206004820152601560248201527f45524332303a2065787069726564207065726d69740000000000000000000000604482015290519081900360640190fd5b6001600160a01b0380881660008181526020818152604080832080546001810190915581517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98185015280830195909552948b166060850152608084018a905260a084019490945260c08084018990528451808503909101815260e09093019093528151919092012090611699610984565b8260405160200180807f190100000000000000000000000000000000000000000000000000000000000081525060020183815260200182815260200192505050604051602081830303815290604052805190602001209050600060018287878760405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561174d573d6000803e3d6000fd5b505050602060405103519050896001600160a01b0316816001600160a01b0316146117bf576040805162461bcd60e51b815260206004820152601560248201527f45524332303a20696e76616c6964207065726d69740000000000000000000000604482015290519081900360640190fd5b6117ca8a8a8a6119a4565b50505050505050505050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b60008061180c6119a0565b9050611819818787611c2f565b61182b866001600160a01b0316611d96565b15611994577f4fc35859000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916866001600160a01b0316634fc3585983848989896040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f8201169050808301925050509650505050505050602060405180830381600087803b15801561190c57600080fd5b505af1158015611920573d6000803e3d6000fd5b505050506040513d602081101561193657600080fd5b50516001600160e01b03191614611994576040805162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e736665722072656675736564000000000000000000604482015290519081900360640190fd5b50600195945050505050565b3390565b6001600160a01b0382166119ff576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a207a65726f2061646472657373207370656e6465720000000000604482015290519081900360640190fd5b6001600160a01b03808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b611a6c838383611c2f565b836001600160a01b0316836001600160a01b031614611a9057611a90838583611b20565b50505050565b8051602091820120604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81850152808201929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606083015260808201939093523060a0808301919091528351808303909101815260c0909101909252815191012090565b6001600160a01b038084166000908152600560209081526040808320938616835292905220546000198114801590611b5757508115155b15611bde57818103818110611bb3576040805162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015290519081900360640190fd5b6001600160a01b03808616600090815260056020908152604080832093881683529290522081905590505b826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a350505050565b6001600160a01b038216611c8a576040805162461bcd60e51b815260206004820152601660248201527f45524332303a20746f207a65726f206164647265737300000000000000000000604482015290519081900360640190fd5b8015611d46576001600160a01b038316600090815260046020526040902054818103818110611d00576040805162461bcd60e51b815260206004820152601b60248201527f45524332303a20696e73756666696369656e742062616c616e63650000000000604482015290519081900360640190fd5b836001600160a01b0316856001600160a01b031614611d43576001600160a01b038086166000908152600460205260408082208490559186168152208054840190555b50505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b3b15159056fea2646970667358221220cb81fecfe41671ec5e4c19edfe1a4b8b62f7735abbb613e3cc1e62a06857f8e564736f6c63430007060033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000022000000000000000000000000000000000000000000000000000000000000003e0000000000000000000000000000000000000000000000000000000000000000d000000000000000000000000059ce2e351e36f276bfced3f63653249207edcb4000000000000000000000000da05ba1469c4fb2565f694afe0eae7487d4961d1000000000000000000000000b8a6b7532f6bccf4a7fb5afe4b7bff4f077c7a5e0000000000000000000000002ac2d05c9bcf284871eaab8e9bc9bea742c6fd900000000000000000000000002eadbd0ceba80683e3c2100165e16716bf50b73500000000000000000000000066481835d1111f597c2ad6c61ff94eb216ecd3fb000000000000000000000000100cbdf398f29bdd067c75e82a4248696178082d0000000000000000000000003c25267f130a2e5c27fb2eb2e1f2c094a015613d000000000000000000000000449cee63728e85fca560590026ed4cd88f7bf76f00000000000000000000000059bbf14b028f5b5bd58f5fc8888224a3c0d817230000000000000000000000000b305078dbbcd8615ce92c790f1c6f4ed9dd0cba000000000000000000000000f692e7b7e16bb755b9a72510fc9cb7285b6e7ac80000000000000000000000008c4341c904fe91e02c7575a70027702b506a2a4e000000000000000000000000000000000000000000000000000000000000000d0000000000000000000000000000000000000000024306c4097859c43c000000000000000000000000000000000000000000000000084595161401484a0000000000000000000000000000000000000000000000006ed79a8e3f4462460000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000006ed79a8e3f4462460000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000019d971e4fe8401e740000000000000000000000000000000000000000000000033b2e3c9fd0803ce80000000000000000000000000000000000000000000000019d971e4fe8401e74000000000000000000000000000000000000000000000000e0fe3d8bb9bc7b10000000000000000000000000000000000000000000000001363156bbee3016d70000000000000000000000000000000000000000000000001f04ef12cb04cf15800000000000000000000000000000000000000000000001172c67a9232b47c1800000000000000000000000000000000000000000000000000000000000000000001e68747470733a2f2f6170692e646f7365746f6b656e2e636f6d2f6a736f6e0000
-----Decoded View---------------
Arg [0] : recipients (address[]): 0x059CE2E351e36F276bfCEd3f63653249207edCB4,0xda05Ba1469c4fB2565F694afe0EAe7487d4961D1,0xB8a6b7532F6Bccf4a7FB5afE4B7BFf4F077c7A5e,0x2aC2D05C9BCF284871eaaB8E9bc9bEA742C6Fd90,0x2EaDbD0cebA80683E3C2100165E16716bF50B735,0x66481835D1111F597c2Ad6c61FF94eB216EcD3FB,0x100Cbdf398f29bDD067C75E82a4248696178082d,0x3C25267F130a2e5C27fb2eb2e1f2c094A015613D,0x449CeE63728E85FCA560590026eD4cD88F7Bf76f,0x59bbF14b028f5b5Bd58f5Fc8888224a3C0D81723,0x0b305078dBbCD8615CE92c790f1C6f4eD9dd0Cba,0xF692e7B7E16BB755b9a72510fc9CB7285B6E7ac8,0x8c4341c904Fe91e02C7575A70027702b506A2A4E
Arg [1] : values (uint256[]): 700000000000000000000000000,10000000000000000000000000,134000000000000000000000000,500000000000000000000000000,134000000000000000000000000,500000000000000000000000000,500000000000000000000000000,1000000000000000000000000000,500000000000000000000000000,272000000000000000000000000,375000000000000000000000000,37500000000000000000000000,337500000000000000000000000
Arg [2] : tokenURI_ (string): https://api.dosetoken.com/json
-----Encoded View---------------
33 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000220
Arg [2] : 00000000000000000000000000000000000000000000000000000000000003e0
Arg [3] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [4] : 000000000000000000000000059ce2e351e36f276bfced3f63653249207edcb4
Arg [5] : 000000000000000000000000da05ba1469c4fb2565f694afe0eae7487d4961d1
Arg [6] : 000000000000000000000000b8a6b7532f6bccf4a7fb5afe4b7bff4f077c7a5e
Arg [7] : 0000000000000000000000002ac2d05c9bcf284871eaab8e9bc9bea742c6fd90
Arg [8] : 0000000000000000000000002eadbd0ceba80683e3c2100165e16716bf50b735
Arg [9] : 00000000000000000000000066481835d1111f597c2ad6c61ff94eb216ecd3fb
Arg [10] : 000000000000000000000000100cbdf398f29bdd067c75e82a4248696178082d
Arg [11] : 0000000000000000000000003c25267f130a2e5c27fb2eb2e1f2c094a015613d
Arg [12] : 000000000000000000000000449cee63728e85fca560590026ed4cd88f7bf76f
Arg [13] : 00000000000000000000000059bbf14b028f5b5bd58f5fc8888224a3c0d81723
Arg [14] : 0000000000000000000000000b305078dbbcd8615ce92c790f1c6f4ed9dd0cba
Arg [15] : 000000000000000000000000f692e7b7e16bb755b9a72510fc9cb7285b6e7ac8
Arg [16] : 0000000000000000000000008c4341c904fe91e02c7575a70027702b506a2a4e
Arg [17] : 000000000000000000000000000000000000000000000000000000000000000d
Arg [18] : 0000000000000000000000000000000000000000024306c4097859c43c000000
Arg [19] : 000000000000000000000000000000000000000000084595161401484a000000
Arg [20] : 0000000000000000000000000000000000000000006ed79a8e3f446246000000
Arg [21] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [22] : 0000000000000000000000000000000000000000006ed79a8e3f446246000000
Arg [23] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [24] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [25] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [26] : 0000000000000000000000000000000000000000019d971e4fe8401e74000000
Arg [27] : 000000000000000000000000000000000000000000e0fe3d8bb9bc7b10000000
Arg [28] : 000000000000000000000000000000000000000001363156bbee3016d7000000
Arg [29] : 0000000000000000000000000000000000000000001f04ef12cb04cf15800000
Arg [30] : 000000000000000000000000000000000000000001172c67a9232b47c1800000
Arg [31] : 000000000000000000000000000000000000000000000000000000000000001e
Arg [32] : 68747470733a2f2f6170692e646f7365746f6b656e2e636f6d2f6a736f6e0000
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.