Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
321,506,757.3347332 S3C
Holders
6,572
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.00538027 S3CValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
S3Coin
Compiler Version
v0.5.11+commit.c082d0b4
Contract Source Code (Solidity Multiple files format)
pragma solidity ^0.5.0; import "./S3Stake.sol"; import "./ERC20Capped.sol"; import "./ERC20Mintable.sol"; contract S3Coin is ERC20Capped { using SafeMath for uint256; string public name = "S3 COIN"; string public symbol = "S3C"; uint8 public decimals = 18; // stake contract addresses uint32 private _stakeCount = 0; uint256 private _stakeTotal = 0; mapping (uint32 => address) private _stakes; // NewStake event event NewStake(address indexed account); /** * - cap: 1000000000000000000000000000 (1 bil) * - init: 300000000000000000000000000 (3 mil) */ constructor (uint256 cap, uint256 init) public ERC20Capped(cap) { require(cap > 1000000000000000000, "S3Coin: cap must greater than 10^18"); // mint to sender init tokens mint(msg.sender, init); } /** * Requirements: * - the caller must have the `StakerRole`. * * return new stake address. */ function stake(uint32 id, address beneficiary, uint256 amount, uint256 releaseAmount, uint32 releaseTime) public onlyMinter returns (address) { require(_stakes[id] == address(0), "S3Coin: stake with ID already exist"); require(balanceOf(msg.sender) >= amount, "S3Coin: there is not enough tokens to stake"); require(amount >= releaseAmount, "S3Coin: there is not enough tokens to stake"); // create new stake S3Stake newStake = new S3Stake(S3Coin(address(this)), beneficiary, releaseAmount, releaseTime); emit NewStake(address(newStake)); // transfer amount of token to stake address require(transfer(address(newStake), amount), "S3Coin: transfer tokens to new stake failed"); // update data _stakeCount += 1; _stakeTotal = _stakeTotal.add(amount); _stakes[id] = address(newStake); return _stakes[id]; } /** * Get a stake contract address. */ function stakeAddress(uint32 id) public view returns (address) { return _stakes[id]; } /** * Get number of stakes. */ function stakeCount() public view returns (uint) { return _stakeCount; } /** * Get total tokens were staked. */ function stakeTotal() public view returns (uint256) { return _stakeTotal; } }
pragma solidity ^0.5.0; import "./IERC20.sol"; import "./SafeMath.sol"; /** * @dev Implementation of the `IERC20` interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using `_mint`. * For a generic mechanism see `ERC20Mintable`. * * *For a detailed writeup see our guide [How to implement supply * mechanisms](https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226).* * * We have followed general OpenZeppelin guidelines: functions revert instead * of returning `false` on failure. This behavior is nonetheless conventional * and does not conflict with the expectations of ERC20 applications. * * Additionally, an `Approval` event is emitted on calls to `transferFrom`. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard `decreaseAllowance` and `increaseAllowance` * functions have been added to mitigate the well-known issues around setting * allowances. See `IERC20.approve`. */ contract ERC20 is IERC20 { using SafeMath for uint256; mapping (address => uint256) private _balances; mapping (address => mapping (address => uint256)) private _allowances; uint256 private _totalSupply; /** * @dev See `IERC20.totalSupply`. */ function totalSupply() public view returns (uint256) { return _totalSupply; } /** * @dev See `IERC20.balanceOf`. */ function balanceOf(address account) public view returns (uint256) { return _balances[account]; } /** * @dev See `IERC20.transfer`. * * Requirements: * * - `recipient` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address recipient, uint256 amount) public returns (bool) { _transfer(msg.sender, recipient, amount); return true; } /** * @dev See `IERC20.allowance`. */ function allowance(address owner, address spender) public view returns (uint256) { return _allowances[owner][spender]; } /** * @dev See `IERC20.approve`. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 value) public returns (bool) { _approve(msg.sender, spender, value); return true; } /** * @dev See `IERC20.transferFrom`. * * Emits an `Approval` event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of `ERC20`; * * Requirements: * - `sender` and `recipient` cannot be the zero address. * - `sender` must have a balance of at least `value`. * - the caller must have allowance for `sender`'s tokens of at least * `amount`. */ function transferFrom(address sender, address recipient, uint256 amount) public returns (bool) { _transfer(sender, recipient, amount); _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount)); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue)); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to `approve` that can be used as a mitigation for * problems described in `IERC20.approve`. * * Emits an `Approval` event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) { _approve(msg.sender, spender, _allowances[msg.sender][spender].sub(subtractedValue)); return true; } /** * @dev Moves tokens `amount` from `sender` to `recipient`. * * This is internal function is equivalent to `transfer`, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a `Transfer` event. * * Requirements: * * - `sender` cannot be the zero address. * - `recipient` cannot be the zero address. * - `sender` must have a balance of at least `amount`. */ function _transfer(address sender, address recipient, uint256 amount) internal { require(sender != address(0), "ERC20: transfer from the zero address"); require(recipient != address(0), "ERC20: transfer to the zero address"); _balances[sender] = _balances[sender].sub(amount); _balances[recipient] = _balances[recipient].add(amount); emit Transfer(sender, recipient, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a `Transfer` event with `from` set to the zero address. * * Requirements * * - `to` cannot be the zero address. */ function _mint(address account, uint256 amount) internal { require(account != address(0), "ERC20: mint to the zero address"); _totalSupply = _totalSupply.add(amount); _balances[account] = _balances[account].add(amount); emit Transfer(address(0), account, amount); } /** * @dev Destoys `amount` tokens from `account`, reducing the * total supply. * * Emits a `Transfer` event with `to` set to the zero address. * * Requirements * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ // function _burn(address account, uint256 value) internal { // require(account != address(0), "ERC20: burn from the zero address"); // _totalSupply = _totalSupply.sub(value); // _balances[account] = _balances[account].sub(value); // emit Transfer(account, address(0), value); // } /** * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens. * * This is internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an `Approval` event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 value) internal { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = value; emit Approval(owner, spender, value); } /** * @dev Destoys `amount` tokens from `account`.`amount` is then deducted * from the caller's allowance. * * See `_burn` and `_approve`. */ // function _burnFrom(address account, uint256 amount) internal { // _burn(account, amount); // _approve(account, msg.sender, _allowances[account][msg.sender].sub(amount)); // } }
pragma solidity ^0.5.0; import "./ERC20Mintable.sol"; /** * @dev Extension of `ERC20Mintable` that adds a cap to the supply of tokens. */ contract ERC20Capped is ERC20Mintable { uint256 private _cap; /** * @dev Sets the value of the `cap`. This value is immutable, it can only be * set once during construction. */ constructor (uint256 cap) public { require(cap > 0, "ERC20Capped: cap is 0"); _cap = cap; } /** * @dev Returns the cap on the token's total supply. */ function cap() public view returns (uint256) { return _cap; } /** * @dev See `ERC20Mintable.mint`. * * Requirements: * * - `value` must not cause the total supply to go over the cap. */ function _mint(address account, uint256 value) internal { require(totalSupply().add(value) <= _cap, "ERC20Capped: cap exceeded"); super._mint(account, value); } }
pragma solidity ^0.5.0; import "./ERC20.sol"; import "./MinterRole.sol"; /** * @dev Extension of `ERC20` that adds a set of accounts with the `MinterRole`, * which have permission to mint (create) new tokens as they see fit. * * At construction, the deployer of the contract is the only minter. */ contract ERC20Mintable is ERC20, MinterRole { /** * @dev See `ERC20._mint`. * * Requirements: * * - the caller must have the `MinterRole`. */ function mint(address account, uint256 amount) public onlyMinter returns (bool) { _mint(account, amount); return true; } }
pragma solidity ^0.5.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. Does not include * the optional functions; to access them see `ERC20Detailed`. */ interface IERC20 { /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `recipient`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transfer(address recipient, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through `transferFrom`. This is * zero by default. * * This value changes when `approve` or `transferFrom` are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * > Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an `Approval` event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `sender` to `recipient` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a `Transfer` event. */ function transferFrom(address sender, address recipient, uint256 amount) external returns (bool); /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to `approve`. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); }
pragma solidity ^0.5.0; import "./Roles.sol"; contract MinterRole { using Roles for Roles.Role; event MinterAdded(address indexed account); event MinterRemoved(address indexed account); Roles.Role private _minters; constructor () internal { _addMinter(msg.sender); } modifier onlyMinter() { require(isMinter(msg.sender), "MinterRole: caller does not have the Minter role"); _; } function isMinter(address account) public view returns (bool) { return _minters.has(account); } function addMinter(address account) public onlyMinter { _addMinter(account); } function renounceMinter() public { _removeMinter(msg.sender); } function _addMinter(address account) internal { _minters.add(account); emit MinterAdded(account); } function _removeMinter(address account) internal { _minters.remove(account); emit MinterRemoved(account); } }
pragma solidity ^0.5.0; /** * @title Roles * @dev Library for managing addresses assigned to a Role. */ library Roles { struct Role { mapping (address => bool) bearer; } /** * @dev Give an account access to this role. */ function add(Role storage role, address account) internal { require(!has(role, account), "Roles: account already has role"); role.bearer[account] = true; } /** * @dev Remove an account's access to this role. */ function remove(Role storage role, address account) internal { require(has(role, account), "Roles: account does not have role"); role.bearer[account] = false; } /** * @dev Check if an account has this role. * @return bool */ function has(Role storage role, address account) internal view returns (bool) { require(account != address(0), "Roles: account is the zero address"); return role.bearer[account]; } }
pragma solidity ^0.5.0; import "./S3Coin.sol"; //import "./SafeMath.sol"; //import "./SafeERC20.sol"; /** * @title S3Stake * S3Stake is a token stake contract that will allow daily minting * to beneficiary, and allow beneficiary to extract the tokens after a given release time. */ contract S3Stake /*is TokenTimelock*/ { //using SafeMath for uint256; //using SafeERC20 for IERC20; // ERC20 basic token contract being held S3Coin private _token; // beneficiary of tokens after they are released address private _beneficiary; // amount will be release each success call uint256 private _releaseAmount; // timestamp when token release is enabled uint32 private _releaseTime; // last given release at (timestamp) uint32 private _lastReleaseTime; constructor (S3Coin token, address beneficiary, uint256 releaseAmount, uint32 releaseTime) public { // solhint-disable-next-line not-rely-on-time //require(releaseTime > block.timestamp, "TokenTimelock: release time is before current time"); _token = token; _beneficiary = beneficiary; _releaseTime = releaseTime; _releaseAmount = releaseAmount; _lastReleaseTime = _releaseTime; } /** * @return the token being held. */ function token() public view returns (S3Coin) { return _token; } /** * @return the beneficiary of the tokens. */ function beneficiary() public view returns (address) { return _beneficiary; } /** * @return the time since then the tokens can be released. */ function releaseTime() public view returns (uint32) { return _releaseTime; } /** * @return amount of token can be released a time. */ function releaseAmount() public view returns (uint256) { return _releaseAmount; } /** * @return last released time. */ function lastReleaseTime() public view returns (uint32) { return _lastReleaseTime; } /** * @return balance of the stake. */ function balance() public view returns (uint256) { return _token.balanceOf(address(this)); } /** * @notice Transfers tokens held by timelock to beneficiary base on release rate (5%) / week (7 days). */ function release() public returns (bool) { uint256 amount = _token.balanceOf(address(this)); require(amount > 0, "S3Stake: no tokens to release"); // solhint-disable-next-line not-rely-on-time uint lastBlockTime = block.timestamp; require(lastBlockTime >= _releaseTime, "S3Stake: current time is before release time"); // only able to release after each 7-days (7 * 24* 3600 = 604,800) uint32 nowReleaseTime = _lastReleaseTime + 604800; require(lastBlockTime >= nowReleaseTime, "S3Stake: token is only able to release each week (7 days)"); // calculate number of tokens to release uint256 releasableAmount = (amount > _releaseAmount) ? _releaseAmount : amount; // transfer token to beneficiary address _token.transfer(_beneficiary, releasableAmount); // save release time _lastReleaseTime = nowReleaseTime; return true; } }
pragma solidity ^0.5.0; /** * @dev Wrappers over Solidity's arithmetic operations with added overflow * checks. * * Arithmetic operations in Solidity wrap on overflow. This can easily result * in bugs, because programmers usually assume that an overflow raises an * error, which is the standard behavior in high level programming languages. * `SafeMath` restores this intuition by reverting the transaction when an * operation overflows. * * Using this library instead of the unchecked operations eliminates an entire * class of bugs, so it's recommended to use it always. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { uint256 c = a + b; require(c >= a, "SafeMath: addition overflow"); return c; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { require(b <= a, "SafeMath: subtraction overflow"); uint256 c = a - b; return c; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-solidity/pull/522 if (a == 0) { return 0; } uint256 c = a * b; require(c / a == b, "SafeMath: multiplication overflow"); return c; } /** * @dev Returns the integer division of two unsigned integers. Reverts on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { // Solidity only automatically asserts when dividing by 0 require(b > 0, "SafeMath: division by zero"); uint256 c = a / b; // assert(a == b * c + a % b); // There is no case in which this doesn't hold return c; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * Reverts when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { require(b != 0, "SafeMath: modulo by zero"); return a % b; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","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":"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":true,"inputs":[{"internalType":"uint32","name":"id","type":"uint32"}],"name":"stakeAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","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":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"stakeTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint32","name":"id","type":"uint32"},{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"releaseAmount","type":"uint256"},{"internalType":"uint32","name":"releaseTime","type":"uint32"}],"name":"stake","outputs":[{"internalType":"address","name":"","type":"address"}],"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":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","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":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":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"stakeCount","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"},{"inputs":[{"internalType":"uint256","name":"cap","type":"uint256"},{"internalType":"uint256","name":"init","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"NewStake","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"}],"name":"MinterRemoved","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"},{"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"}]
Contract Creation Code
60c0604052600760808190527f533320434f494e0000000000000000000000000000000000000000000000000060a090815262000040916005919062000668565b506040805180820190915260038082527f53334300000000000000000000000000000000000000000000000000000000006020909201918252620000879160069162000668565b506007805464ffffffff001960ff199091166012171690556000600855348015620000b157600080fd5b5060405162001ef638038062001ef683398181016040526040811015620000d757600080fd5b50805160209091015181620000f5336001600160e01b03620001e816565b600081116200016557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f45524332304361707065643a2063617020697320300000000000000000000000604482015290519081900360640190fd5b600455670de0b6b3a76400008211620001ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602381526020018062001e816023913960400191505060405180910390fd5b620001df33826001600160e01b036200023a16565b5050506200070a565b62000203816003620002c560201b62000f581790919060201c565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b600062000250336001600160e01b036200036c16565b620002a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603081526020018062001ea46030913960400191505060405180910390fd5b620002bc83836001600160e01b036200038f16565b50600192915050565b620002da82826001600160e01b036200044716565b156200034757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b6000620003898260036200044760201b62000e011790919060201c565b92915050565b600454620003be82620003aa6001600160e01b03620004ca16565b620004d160201b62000c941790919060201c565b11156200042c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b6200044382826200054d60201b62000e681760201c565b5050565b60006001600160a01b038216620004aa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062001ed46022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6002545b90565b6000828201838110156200054657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6001600160a01b038216620005c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b620005df81600254620004d160201b62000c941790919060201c565b6002556001600160a01b038216600090815260208181526040909120546200061291839062000c94620004d1821b17901c565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620006ab57805160ff1916838001178555620006db565b82800160010185558215620006db579182015b82811115620006db578251825591602001919060010190620006be565b50620006e9929150620006ed565b5090565b620004ce91905b80821115620006e95760008155600101620006f4565b611767806200071a6000396000f3fe608060405234801561001057600080fd5b506004361061012c5760003560e01c8063586c64d2116100ad578063a457c2d711610071578063a457c2d7146103a9578063a9059cbb146103d5578063aa271e1a14610401578063c4a9e11614610427578063dd62ed3e1461042f5761012c565b8063586c64d21461030357806370a082311461034b57806395d89b4114610371578063983b2d561461037957806398650275146103a15761012c565b8063313ce567116100f4578063313ce5671461027d578063355274ea1461029b57806339509351146102a357806340c10f19146102cf5780634b5c8bdf146102fb5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd146102085780632f273fe01461023e575b600080fd5b61013961045d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104eb565b604080519115158252519081900360200190f35b6101f6610501565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b03813581169160208101359091169060400135610507565b6102616004803603602081101561025457600080fd5b503563ffffffff1661055e565b604080516001600160a01b039092168252519081900360200190f35b61028561057f565b6040805160ff9092168252519081900360200190f35b6101f6610588565b6101da600480360360408110156102b957600080fd5b506001600160a01b03813516906020013561058e565b6101da600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356105ca565b6101f661061a565b610261600480360360a081101561031957600080fd5b5063ffffffff81358116916001600160a01b036020820135169160408201359160608101359160809091013516610620565b6101f66004803603602081101561036157600080fd5b50356001600160a01b031661089a565b6101396108b5565b61039f6004803603602081101561038f57600080fd5b50356001600160a01b0316610910565b005b61039f610960565b6101da600480360360408110156103bf57600080fd5b506001600160a01b03813516906020013561096b565b6101da600480360360408110156103eb57600080fd5b506001600160a01b0381351690602001356109a7565b6101da6004803603602081101561041757600080fd5b50356001600160a01b03166109b4565b6101f66109cd565b6101f66004803603604081101561044557600080fd5b506001600160a01b03813581169160200135166109de565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081565b60006104f8338484610a09565b50600192915050565b60025490565b6000610514848484610af5565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461055491869161054f908663ffffffff610c3716565b610a09565b5060019392505050565b63ffffffff166000908152600960205260409020546001600160a01b031690565b60075460ff1681565b60045490565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c9416565b60006105d5336109b4565b6106105760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b6104f88383610cf5565b60085490565b600061062b336109b4565b6106665760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b0316156106c15760405162461bcd60e51b815260040180806020018281038252602381526020018061164f6023913960400191505060405180910390fd5b836106cb3361089a565b10156107085760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b828410156107475760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b60003086858560405161075990611040565b6001600160a01b03948516815292909316602083015260408083019190915263ffffffff9092166060820152905190819003608001906000f0801580156107a4573d6000803e3d6000fd5b506040519091506001600160a01b038216907f46d8ab1385f70e5a3673e97c23c764f7600f7ed7a09b6687deae7131d51752e290600090a26107e681866109a7565b6108215760405162461bcd60e51b815260040180806020018281038252602b8152602001806116dd602b913960400191505060405180910390fd5b6007805463ffffffff610100808304821660010182160264ffffffff001990921691909117909155600854610858918790610c9416565b60085563ffffffff8716600090815260096020526040902080546001600160a01b039283166001600160a01b0319909116179081905516905095945050505050565b6001600160a01b031660009081526020819052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b610919336109b4565b6109545760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b61095d81610d71565b50565b61096933610db9565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c3716565b60006104f8338484610af5565b60006109c760038363ffffffff610e0116565b92915050565b600754610100900463ffffffff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a4e5760405162461bcd60e51b81526004018080602001828103825260248152602001806116b96024913960400191505060405180910390fd5b6001600160a01b038216610a935760405162461bcd60e51b81526004018080602001828103825260228152602001806115dc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610b3a5760405162461bcd60e51b81526004018080602001828103825260258152602001806116946025913960400191505060405180910390fd5b6001600160a01b038216610b7f5760405162461bcd60e51b81526004018080602001828103825260238152602001806115b96023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ba8908263ffffffff610c3716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610bdd908263ffffffff610c9416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610c8e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610cee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600454610d1082610d04610501565b9063ffffffff610c9416565b1115610d63576040805162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610d6d8282610e68565b5050565b610d8260038263ffffffff610f5816565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610dca60038263ffffffff610fd916565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610e485760405162461bcd60e51b81526004018080602001828103825260228152602001806116726022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038216610ec3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ed6908263ffffffff610c9416565b6002556001600160a01b038216600090815260208190526040902054610f02908263ffffffff610c9416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610f628282610e01565b15610fb4576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610fe38282610e01565b61101e5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b61056b8061104e8339019056fe608060405234801561001057600080fd5b5060405161056b38038061056b8339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151600080546001600160a01b039485166001600160a01b031991821617909155600180549490931693169290921790556003805460029390935564010000000063ffffffff92831663ffffffff19909416939093179182169290920263ffffffff60201b199091161790556104ac806100bf6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b91d40011161005b578063b91d4001146100dc578063c062dc5f146100fd578063dfaf734a14610105578063fc0c546a1461010d5761007d565b806338af3eed1461008257806386d1a69f146100a6578063b69ef8a8146100c2575b600080fd5b61008a610115565b604080516001600160a01b039092168252519081900360200190f35b6100ae610124565b604080519115158252519081900360200190f35b6100ca610360565b60408051918252519081900360200190f35b6100e46103dd565b6040805163ffffffff9092168252519081900360200190f35b6100ca6103e9565b6100e46103ef565b61008a610403565b6001546001600160a01b031690565b60008054604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b50519050806101ef576040805162461bcd60e51b815260206004820152601d60248201527f53335374616b653a206e6f20746f6b656e7320746f2072656c65617365000000604482015290519081900360640190fd5b600354429063ffffffff168110156102385760405162461bcd60e51b815260040180806020018281038252602c815260200180610413602c913960400191505060405180910390fd5b60035462093a8063ffffffff6401000000009092048216019081168210156102915760405162461bcd60e51b815260040180806020018281038252603981526020018061043f6039913960400191505060405180910390fd5b600060025484116102a257836102a6565b6002545b600080546001546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955091169263a9059cbb92604480840193602093929083900390910190829087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050506040513d602081101561032d57600080fd5b50506003805463ffffffff9093166401000000000267ffffffff0000000019909316929092179091555060019250505090565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103ac57600080fd5b505afa1580156103c0573d6000803e3d6000fd5b505050506040513d60208110156103d657600080fd5b5051905090565b60035463ffffffff1690565b60025490565b600354640100000000900463ffffffff1690565b6000546001600160a01b03169056fe53335374616b653a2063757272656e742074696d65206973206265666f72652072656c656173652074696d6553335374616b653a20746f6b656e206973206f6e6c792061626c6520746f2072656c656173652065616368207765656b202837206461797329a265627a7a72315820bdd7c6d51db62238f2aabc0dece9a2ba286f3cfc952f33e416a1dba2922f932264736f6c634300050b003245524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c655333436f696e3a207374616b65207769746820494420616c7265616479206578697374526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735333436f696e3a207472616e7366657220746f6b656e7320746f206e6577207374616b65206661696c65645333436f696e3a207468657265206973206e6f7420656e6f75676820746f6b656e7320746f207374616b65a265627a7a723158201fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c64736f6c634300050b00325333436f696e3a20636170206d7573742067726561746572207468616e2031305e31384d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420697320746865207a65726f20616464726573730000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000f8277896582678ac000000
Deployed Bytecode
0x608060405234801561001057600080fd5b506004361061012c5760003560e01c8063586c64d2116100ad578063a457c2d711610071578063a457c2d7146103a9578063a9059cbb146103d5578063aa271e1a14610401578063c4a9e11614610427578063dd62ed3e1461042f5761012c565b8063586c64d21461030357806370a082311461034b57806395d89b4114610371578063983b2d561461037957806398650275146103a15761012c565b8063313ce567116100f4578063313ce5671461027d578063355274ea1461029b57806339509351146102a357806340c10f19146102cf5780634b5c8bdf146102fb5761012c565b806306fdde0314610131578063095ea7b3146101ae57806318160ddd146101ee57806323b872dd146102085780632f273fe01461023e575b600080fd5b61013961045d565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017357818101518382015260200161015b565b50505050905090810190601f1680156101a05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101da600480360360408110156101c457600080fd5b506001600160a01b0381351690602001356104eb565b604080519115158252519081900360200190f35b6101f6610501565b60408051918252519081900360200190f35b6101da6004803603606081101561021e57600080fd5b506001600160a01b03813581169160208101359091169060400135610507565b6102616004803603602081101561025457600080fd5b503563ffffffff1661055e565b604080516001600160a01b039092168252519081900360200190f35b61028561057f565b6040805160ff9092168252519081900360200190f35b6101f6610588565b6101da600480360360408110156102b957600080fd5b506001600160a01b03813516906020013561058e565b6101da600480360360408110156102e557600080fd5b506001600160a01b0381351690602001356105ca565b6101f661061a565b610261600480360360a081101561031957600080fd5b5063ffffffff81358116916001600160a01b036020820135169160408201359160608101359160809091013516610620565b6101f66004803603602081101561036157600080fd5b50356001600160a01b031661089a565b6101396108b5565b61039f6004803603602081101561038f57600080fd5b50356001600160a01b0316610910565b005b61039f610960565b6101da600480360360408110156103bf57600080fd5b506001600160a01b03813516906020013561096b565b6101da600480360360408110156103eb57600080fd5b506001600160a01b0381351690602001356109a7565b6101da6004803603602081101561041757600080fd5b50356001600160a01b03166109b4565b6101f66109cd565b6101f66004803603604081101561044557600080fd5b506001600160a01b03813581169160200135166109de565b6005805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b820191906000526020600020905b8154815290600101906020018083116104c657829003601f168201915b505050505081565b60006104f8338484610a09565b50600192915050565b60025490565b6000610514848484610af5565b6001600160a01b03841660009081526001602090815260408083203380855292529091205461055491869161054f908663ffffffff610c3716565b610a09565b5060019392505050565b63ffffffff166000908152600960205260409020546001600160a01b031690565b60075460ff1681565b60045490565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c9416565b60006105d5336109b4565b6106105760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b6104f88383610cf5565b60085490565b600061062b336109b4565b6106665760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b63ffffffff86166000908152600960205260409020546001600160a01b0316156106c15760405162461bcd60e51b815260040180806020018281038252602381526020018061164f6023913960400191505060405180910390fd5b836106cb3361089a565b10156107085760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b828410156107475760405162461bcd60e51b815260040180806020018281038252602b815260200180611708602b913960400191505060405180910390fd5b60003086858560405161075990611040565b6001600160a01b03948516815292909316602083015260408083019190915263ffffffff9092166060820152905190819003608001906000f0801580156107a4573d6000803e3d6000fd5b506040519091506001600160a01b038216907f46d8ab1385f70e5a3673e97c23c764f7600f7ed7a09b6687deae7131d51752e290600090a26107e681866109a7565b6108215760405162461bcd60e51b815260040180806020018281038252602b8152602001806116dd602b913960400191505060405180910390fd5b6007805463ffffffff610100808304821660010182160264ffffffff001990921691909117909155600854610858918790610c9416565b60085563ffffffff8716600090815260096020526040902080546001600160a01b039283166001600160a01b0319909116179081905516905095945050505050565b6001600160a01b031660009081526020819052604090205490565b6006805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104e35780601f106104b8576101008083540402835291602001916104e3565b610919336109b4565b6109545760405162461bcd60e51b81526004018080602001828103825260308152602001806115fe6030913960400191505060405180910390fd5b61095d81610d71565b50565b61096933610db9565b565b3360008181526001602090815260408083206001600160a01b038716845290915281205490916104f891859061054f908663ffffffff610c3716565b60006104f8338484610af5565b60006109c760038363ffffffff610e0116565b92915050565b600754610100900463ffffffff1690565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b038316610a4e5760405162461bcd60e51b81526004018080602001828103825260248152602001806116b96024913960400191505060405180910390fd5b6001600160a01b038216610a935760405162461bcd60e51b81526004018080602001828103825260228152602001806115dc6022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316610b3a5760405162461bcd60e51b81526004018080602001828103825260258152602001806116946025913960400191505060405180910390fd5b6001600160a01b038216610b7f5760405162461bcd60e51b81526004018080602001828103825260238152602001806115b96023913960400191505060405180910390fd5b6001600160a01b038316600090815260208190526040902054610ba8908263ffffffff610c3716565b6001600160a01b038085166000908152602081905260408082209390935590841681522054610bdd908263ffffffff610c9416565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600082821115610c8e576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015610cee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600454610d1082610d04610501565b9063ffffffff610c9416565b1115610d63576040805162461bcd60e51b815260206004820152601960248201527f45524332304361707065643a2063617020657863656564656400000000000000604482015290519081900360640190fd5b610d6d8282610e68565b5050565b610d8260038263ffffffff610f5816565b6040516001600160a01b038216907f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f690600090a250565b610dca60038263ffffffff610fd916565b6040516001600160a01b038216907fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669290600090a250565b60006001600160a01b038216610e485760405162461bcd60e51b81526004018080602001828103825260228152602001806116726022913960400191505060405180910390fd5b506001600160a01b03166000908152602091909152604090205460ff1690565b6001600160a01b038216610ec3576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b600254610ed6908263ffffffff610c9416565b6002556001600160a01b038216600090815260208190526040902054610f02908263ffffffff610c9416565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b610f628282610e01565b15610fb4576040805162461bcd60e51b815260206004820152601f60248201527f526f6c65733a206163636f756e7420616c72656164792068617320726f6c6500604482015290519081900360640190fd5b6001600160a01b0316600090815260209190915260409020805460ff19166001179055565b610fe38282610e01565b61101e5760405162461bcd60e51b815260040180806020018281038252602181526020018061162e6021913960400191505060405180910390fd5b6001600160a01b0316600090815260209190915260409020805460ff19169055565b61056b8061104e8339019056fe608060405234801561001057600080fd5b5060405161056b38038061056b8339818101604052608081101561003357600080fd5b50805160208201516040830151606090930151600080546001600160a01b039485166001600160a01b031991821617909155600180549490931693169290921790556003805460029390935564010000000063ffffffff92831663ffffffff19909416939093179182169290920263ffffffff60201b199091161790556104ac806100bf6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063b91d40011161005b578063b91d4001146100dc578063c062dc5f146100fd578063dfaf734a14610105578063fc0c546a1461010d5761007d565b806338af3eed1461008257806386d1a69f146100a6578063b69ef8a8146100c2575b600080fd5b61008a610115565b604080516001600160a01b039092168252519081900360200190f35b6100ae610124565b604080519115158252519081900360200190f35b6100ca610360565b60408051918252519081900360200190f35b6100e46103dd565b6040805163ffffffff9092168252519081900360200190f35b6100ca6103e9565b6100e46103ef565b61008a610403565b6001546001600160a01b031690565b60008054604080516370a0823160e01b8152306004820152905183926001600160a01b0316916370a08231916024808301926020929190829003018186803b15801561016f57600080fd5b505afa158015610183573d6000803e3d6000fd5b505050506040513d602081101561019957600080fd5b50519050806101ef576040805162461bcd60e51b815260206004820152601d60248201527f53335374616b653a206e6f20746f6b656e7320746f2072656c65617365000000604482015290519081900360640190fd5b600354429063ffffffff168110156102385760405162461bcd60e51b815260040180806020018281038252602c815260200180610413602c913960400191505060405180910390fd5b60035462093a8063ffffffff6401000000009092048216019081168210156102915760405162461bcd60e51b815260040180806020018281038252603981526020018061043f6039913960400191505060405180910390fd5b600060025484116102a257836102a6565b6002545b600080546001546040805163a9059cbb60e01b81526001600160a01b03928316600482015260248101869052905194955091169263a9059cbb92604480840193602093929083900390910190829087803b15801561030357600080fd5b505af1158015610317573d6000803e3d6000fd5b505050506040513d602081101561032d57600080fd5b50506003805463ffffffff9093166401000000000267ffffffff0000000019909316929092179091555060019250505090565b60008054604080516370a0823160e01b815230600482015290516001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156103ac57600080fd5b505afa1580156103c0573d6000803e3d6000fd5b505050506040513d60208110156103d657600080fd5b5051905090565b60035463ffffffff1690565b60025490565b600354640100000000900463ffffffff1690565b6000546001600160a01b03169056fe53335374616b653a2063757272656e742074696d65206973206265666f72652072656c656173652074696d6553335374616b653a20746f6b656e206973206f6e6c792061626c6520746f2072656c656173652065616368207765656b202837206461797329a265627a7a72315820bdd7c6d51db62238f2aabc0dece9a2ba286f3cfc952f33e416a1dba2922f932264736f6c634300050b003245524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573734d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c655333436f696e3a207374616b65207769746820494420616c7265616479206578697374526f6c65733a206163636f756e7420697320746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735333436f696e3a207472616e7366657220746f6b656e7320746f206e6577207374616b65206661696c65645333436f696e3a207468657265206973206e6f7420656e6f75676820746f6b656e7320746f207374616b65a265627a7a723158201fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c64736f6c634300050b0032
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000000000000000000000000000000000000000000000f8277896582678ac000000
-----Decoded View---------------
Arg [0] : cap (uint256): 1000000000000000000000000000
Arg [1] : init (uint256): 300000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000
Arg [1] : 000000000000000000000000000000000000000000f8277896582678ac000000
Deployed Bytecode Sourcemap
114:2314:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;114:2314:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;187:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;187:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2444:145:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2444:145:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1505:89;;;:::i;:::-;;;;;;;;;;;;;;;;3046:252;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3046:252:0;;;;;;;;;;;;;;;;;:::i;2028:100:6:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2028:100:6;;;;:::i;:::-;;;;-1:-1:-1;;;;;2028:100:6;;;;;;;;;;;;;;259:26;;;:::i;:::-;;;;;;;;;;;;;;;;;;;537:73:1;;;:::i;3693:203:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;3693:203:0;;;;;;;;:::i;485:140:2:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;485:140:2;;;;;;;;:::i;2334:89:6:-;;;:::i;1020:944::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;1020:944:6;;;;;;-1:-1:-1;;;;;1020:944:6;;;;;;;;;;;;;;;;;;;;;;;:::i;1652:108:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1652:108:0;-1:-1:-1;;;;;1652:108:0;;:::i;224:28:6:-;;;:::i;559:90:4:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;559:90:4;-1:-1:-1;;;;;559:90:4;;:::i;:::-;;655:75;;;:::i;4383:213:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;4383:213:0;;;;;;;;:::i;1963:153::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1963:153:0;;;;;;;;:::i;446:107:4:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;446:107:4;-1:-1:-1;;;;;446:107:4;;:::i;2184:86:6:-;;;:::i;2174:132:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2174:132:0;;;;;;;;;;:::i;187:30:6:-;;;;;;;;;;;;;;;-1:-1:-1;;187:30:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2444:145:0:-;2509:4;2525:36;2534:10;2546:7;2555:5;2525:8;:36::i;:::-;-1:-1:-1;2578:4:0;2444:145;;;;:::o;1505:89::-;1575:12;;1505:89;:::o;3046:252::-;3135:4;3151:36;3161:6;3169:9;3180:6;3151:9;:36::i;:::-;-1:-1:-1;;;;;3226:19:0;;;;;;:11;:19;;;;;;;;3214:10;3226:31;;;;;;;;;3197:73;;3206:6;;3226:43;;3262:6;3226:43;:35;:43;:::i;:::-;3197:8;:73::i;:::-;-1:-1:-1;3287:4:0;3046:252;;;;;:::o;2028:100:6:-;2109:11;;2082:7;2109:11;;;:7;:11;;;;;;-1:-1:-1;;;;;2109:11:6;;2028:100::o;259:26::-;;;;;;:::o;537:73:1:-;599:4;;537:73;:::o;3693:203:0:-;3798:10;3773:4;3819:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;3819:32:0;;;;;;;;;;3773:4;;3789:79;;3810:7;;3819:48;;3856:10;3819:48;:36;:48;:::i;485:140:2:-;559:4;349:20:4;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;575:22:2;581:7;590:6;575:5;:22::i;2334:89:6:-;2404:11;;2334:89;:::o;1020:944::-;1162:7;349:20:4;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1190:11:6;;;1213:1;1190:11;;;:7;:11;;;;;;-1:-1:-1;;;;;1190:11:6;:25;1182:73;;;;-1:-1:-1;;;1182:73:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1299:6;1274:21;1284:10;1274:9;:21::i;:::-;:31;;1266:87;;;;-1:-1:-1;;;1266:87:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:13;1372:6;:23;;1364:79;;;;-1:-1:-1;;;1364:79:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1485:16;1531:4;1539:11;1552:13;1567:11;1504:75;;;;;:::i;:::-;-1:-1:-1;;;;;1504:75:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1504:75:6;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;1597:27:6;;1485:94;;-1:-1:-1;;;;;;1597:27:6;;;;;;;;1699:35;1716:8;1727:6;1699:8;:35::i;:::-;1691:91;;;;-1:-1:-1;;;1691:91:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1819:11;:16;;;;;;;;;1834:1;1819:16;;;;-1:-1:-1;;1819:16:6;;;;;;;;;;1860:11;;:23;;1876:6;;1860:15;:23;:::i;:::-;1846:11;:37;1894:11;;;;;;;:7;:11;;;;;:31;;-1:-1:-1;;;;;1894:31:6;;;-1:-1:-1;;;;;;1894:31:6;;;;;;;;1945:11;;-1:-1:-1;1020:944:6;;;;;;;:::o;1652:108:0:-;-1:-1:-1;;;;;1735:18:0;1709:7;1735:18;;;;;;;;;;;;1652:108::o;224:28:6:-;;;;;;;;;;;;;;;-1:-1:-1;;224:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;559:90:4;349:20;358:10;349:8;:20::i;:::-;341:81;;;;-1:-1:-1;;;341:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;623:19;634:7;623:10;:19::i;:::-;559:90;:::o;655:75::-;698:25;712:10;698:13;:25::i;:::-;655:75::o;4383:213:0:-;4493:10;4468:4;4514:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;4514:32:0;;;;;;;;;;4468:4;;4484:84;;4505:7;;4514:53;;4551:15;4514:53;:36;:53;:::i;1963:153::-;2032:4;2048:40;2058:10;2070:9;2081:6;2048:9;:40::i;446:107:4:-;502:4;525:21;:8;538:7;525:21;:12;:21;:::i;:::-;518:28;446:107;-1:-1:-1;;446:107:4:o;2184:86:6:-;2251:11;;;;;;;;2184:86::o;2174:132:0:-;-1:-1:-1;;;;;2272:18:0;;;2246:7;2272:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;2174:132::o;7126:329::-;-1:-1:-1;;;;;7218:19:0;;7210:68;;;;-1:-1:-1;;;7210:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7296:21:0;;7288:68;;;;-1:-1:-1;;;7288:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7367:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:35;;;7417:31;;;;;;;;;;;;;;;;;7126:329;;;:::o;5070:422::-;-1:-1:-1;;;;;5167:20:0;;5159:70;;;;-1:-1:-1;;;5159:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5247:23:0;;5239:71;;;;-1:-1:-1;;;5239:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5341:17:0;;:9;:17;;;;;;;;;;;:29;;5363:6;5341:29;:21;:29;:::i;:::-;-1:-1:-1;;;;;5321:17:0;;;:9;:17;;;;;;;;;;;:49;;;;5403:20;;;;;;;:32;;5428:6;5403:32;:24;:32;:::i;:::-;-1:-1:-1;;;;;5380:20:0;;;:9;:20;;;;;;;;;;;;:55;;;;5450:35;;;;;;;5380:20;;5450:35;;;;;;;;;;;;;5070:422;;;:::o;1274:179:8:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:8;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:8:o;774:180:1:-;876:4;;848:24;866:5;848:13;:11;:13::i;:::-;:17;:24;:17;:24;:::i;:::-;:32;;840:70;;;;;-1:-1:-1;;;840:70:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;920:27;932:7;941:5;920:11;:27::i;:::-;774:180;;:::o;736:119:4:-;792:21;:8;805:7;792:21;:12;:21;:::i;:::-;828:20;;-1:-1:-1;;;;;828:20:4;;;;;;;;736:119;:::o;861:127::-;920:24;:8;936:7;920:24;:15;:24;:::i;:::-;959:22;;-1:-1:-1;;;;;959:22:4;;;;;;;;861:127;:::o;779:200:5:-;851:4;-1:-1:-1;;;;;875:21:5;;867:68;;;;-1:-1:-1;;;867:68:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;952:20:5;:11;:20;;;;;;;;;;;;;;;779:200::o;5762:302:0:-;-1:-1:-1;;;;;5837:21:0;;5829:65;;;;;-1:-1:-1;;;5829:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:12;;:24;;5937:6;5920:24;:16;:24;:::i;:::-;5905:12;:39;-1:-1:-1;;;;;5975:18:0;;:9;:18;;;;;;;;;;;:30;;5998:6;5975:30;:22;:30;:::i;:::-;-1:-1:-1;;;;;5954:18:0;;:9;:18;;;;;;;;;;;:51;;;;6020:37;;;;;;;5954:18;;:9;;6020:37;;;;;;;;;;5762:302;;:::o;260:175:5:-;337:18;341:4;347:7;337:3;:18::i;:::-;336:19;328:63;;;;;-1:-1:-1;;;328:63:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;401:20:5;:11;:20;;;;;;;;;;;:27;;-1:-1:-1;;401:27:5;424:4;401:27;;;260:175::o;510:180::-;589:18;593:4;599:7;589:3;:18::i;:::-;581:64;;;;-1:-1:-1;;;581:64:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;655:20:5;678:5;655:20;;;;;;;;;;;:28;;-1:-1:-1;;655:28:5;;;510:180::o;114:2314:6:-;;;;;;;;:::o
Swarm Source
bzzr://1fe190f8c8035fb92c8f7c4525e5af1921fd0f1c362ff9f411508142f8a1500c
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.