ETH Price: $3,552.66 (+1.11%)
Gas: 38 Gwei

Contract

0xf6EE5e4B2456eC26484c2Dc7077f9A26C797150b
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Transfer109170992020-09-23 6:04:071282 days ago1600841047IN
Pictosis Token
0 ETH0.0021139476
Transfer105894572020-08-03 22:11:391333 days ago1596492699IN
Pictosis Token
0 ETH0.0022281438.53119684
Transfer94766352020-02-13 19:44:031505 days ago1581623043IN
Pictosis Token
0 ETH0.000027811
Renounce Minter90073242019-11-27 1:50:031583 days ago1574819403IN
Pictosis Token
0 ETH0.000057244
Mint90073122019-11-27 1:47:161583 days ago1574819236IN
Pictosis Token
0 ETH0.000278214
Transfer Ownersh...90071772019-11-27 1:10:151583 days ago1574817015IN
Pictosis Token
0 ETH0.000243558
Add Minter90071722019-11-27 1:09:211583 days ago1574816961IN
Pictosis Token
0 ETH0.000364768
Add Minter90071692019-11-27 1:07:581583 days ago1574816878IN
Pictosis Token
0 ETH0.0004559510
0x6080604090070962019-11-27 0:48:001583 days ago1574815680IN
 Create: PictosisToken
0 ETH0.024223810

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PictosisToken

Compiler Version
v0.5.13+commit.5b0b510c

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-27
*/

pragma solidity ^0.5.2;

/**
 * @title Math
 * @dev Assorted math operations
 */
library Math {
    /**
     * @dev Returns the largest of two numbers.
     */
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

    /**
     * @dev Returns the smallest of two numbers.
     */
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

    /**
     * @dev Calculates the average of two numbers. Since these are integers,
     * averages of an even and odd number cannot be represented, and will be
     * rounded down.
     */
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        // (a + b) / 2 can overflow, so we distribute
        return (a / 2) + (b / 2) + ((a % 2 + b % 2) / 2);
    }
}


/**
 * @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(account != address(0));
        require(!has(role, account));

        role.bearer[account] = true;
    }

    /**
     * @dev remove an account's access to this role
     */
    function remove(Role storage role, address account) internal {
        require(account != address(0));
        require(has(role, account));

        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));
        return role.bearer[account];
    }
}


/**
 * @title SafeMath
 * @dev Unsigned math operations with safety checks that revert on error
 */
library SafeMath {
    /**
     * @dev Multiplies two unsigned integers, reverts on 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);

        return c;
    }

    /**
     * @dev Integer division of two unsigned integers truncating the quotient, reverts on division by zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    /**
     * @dev Subtracts two unsigned integers, reverts on overflow (i.e. if subtrahend is greater than minuend).
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Adds two unsigned integers, reverts on overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a);

        return c;
    }

    /**
     * @dev Divides two unsigned integers and returns the remainder (unsigned integer modulo),
     * reverts when dividing by zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0);
        return a % b;
    }
}




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));
        _;
    }

    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);
    }
}


/**
 * @title ERC20 interface
 * @dev see https://eips.ethereum.org/EIPS/eip-20
 */
interface IERC20 {
    function transfer(address to, uint256 value) external returns (bool);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(address from, address to, uint256 value) external returns (bool);

    function totalSupply() external view returns (uint256);

    function balanceOf(address who) external view returns (uint256);

    function allowance(address owner, address spender) external view returns (uint256);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}


contract ApproveAndCallFallBack {
    function receiveApproval(address from, uint256 _amount, address _token, bytes memory _data) public;
}







/**
 * @title Standard ERC20 token
 *
 * @dev Implementation of the basic standard token.
 * https://eips.ethereum.org/EIPS/eip-20
 * Originally based on code by FirstBlood:
 * https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol
 *
 * This implementation emits additional Approval events, allowing applications to reconstruct the allowance status for
 * all accounts just by listening to said events. Note that this isn't required by the specification, and other
 * compliant implementations may not do it.
 */
contract ERC20 is IERC20 {
    using SafeMath for uint256;

    mapping (address => uint256) private _balances;

    mapping (address => mapping (address => uint256)) private _allowed;

    uint256 private _totalSupply;

    /**
     * @dev Total number of tokens in existence
     */
    function totalSupply() public view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev Gets the balance of the specified address.
     * @param owner The address to query the balance of.
     * @return A uint256 representing the amount owned by the passed address.
     */
    function balanceOf(address owner) public view returns (uint256) {
        return _balances[owner];
    }

    /**
     * @dev Function to check the amount of tokens that an owner allowed to a spender.
     * @param owner address The address which owns the funds.
     * @param spender address The address which will spend the funds.
     * @return A uint256 specifying the amount of tokens still available for the spender.
     */
    function allowance(address owner, address spender) public view returns (uint256) {
        return _allowed[owner][spender];
    }

    /**
     * @dev Transfer token to a specified address
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function transfer(address to, uint256 value) public returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    /**
     * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.
     * 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
     * @param spender The address which will spend the funds.
     * @param value The amount of tokens to be spent.
     */
    function approve(address spender, uint256 value) public returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    /**
     * @dev Transfer tokens from one address to another.
     * Note that while this function emits an Approval event, this is not required as per the specification,
     * and other compliant implementations may not emit the event.
     * @param from address The address which you want to send tokens from
     * @param to address The address which you want to transfer to
     * @param value uint256 the amount of tokens to be transferred
     */
    function transferFrom(address from, address to, uint256 value) public returns (bool) {
        _transfer(from, to, value);
        _approve(from, msg.sender, _allowed[from][msg.sender].sub(value));
        return true;
    }

    /**
     * @dev Increase the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][spender] == 0. To increment
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param addedValue The amount of tokens to increase the allowance by.
     */
    function increaseAllowance(address spender, uint256 addedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Decrease the amount of tokens that an owner allowed to a spender.
     * approve should be called when _allowed[msg.sender][spender] == 0. To decrement
     * allowed value is better to use this function to avoid 2 calls (and wait until
     * the first transaction is mined)
     * From MonolithDAO Token.sol
     * Emits an Approval event.
     * @param spender The address which will spend the funds.
     * @param subtractedValue The amount of tokens to decrease the allowance by.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowed[msg.sender][spender].sub(subtractedValue));
        return true;
    }

    /**
     * @dev Transfer token for a specified addresses
     * @param from The address to transfer from.
     * @param to The address to transfer to.
     * @param value The amount to be transferred.
     */
    function _transfer(address from, address to, uint256 value) internal {
        require(to != address(0));

        _balances[from] = _balances[from].sub(value);
        _balances[to] = _balances[to].add(value);
        emit Transfer(from, to, value);
    }

    /**
     * @dev Internal function that mints an amount of the token and assigns it to
     * an account. This encapsulates the modification of balances such that the
     * proper events are emitted.
     * @param account The account that will receive the created tokens.
     * @param value The amount that will be created.
     */
    function _mint(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.add(value);
        _balances[account] = _balances[account].add(value);
        emit Transfer(address(0), account, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account.
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burn(address account, uint256 value) internal {
        require(account != address(0));

        _totalSupply = _totalSupply.sub(value);
        _balances[account] = _balances[account].sub(value);
        emit Transfer(account, address(0), value);
    }

    /**
     * @dev Approve an address to spend another addresses' tokens.
     * @param owner The address that owns the tokens.
     * @param spender The address that will spend the tokens.
     * @param value The number of tokens that can be spent.
     */
    function _approve(address owner, address spender, uint256 value) internal {
        require(spender != address(0));
        require(owner != address(0));

        _allowed[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    /**
     * @dev Internal function that burns an amount of the token of a given
     * account, deducting from the sender's allowance for said account. Uses the
     * internal burn function.
     * Emits an Approval event (reflecting the reduced allowance).
     * @param account The account whose tokens will be burnt.
     * @param value The amount that will be burnt.
     */
    function _burnFrom(address account, uint256 value) internal {
        _burn(account, value);
        _approve(account, msg.sender, _allowed[account][msg.sender].sub(value));
    }
}
 




/**
 * @title ERC20Detailed token
 * @dev The decimals are only for visualization purposes.
 * All the operations are done using the smallest and indivisible token unit,
 * just as on Ethereum all the operations are done in wei.
 */
contract ERC20Detailed is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol, uint8 decimals) public {
        _name = name;
        _symbol = symbol;
        _decimals = decimals;
    }

    /**
     * @return the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @return the symbol of the token.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @return the number of decimals of the token.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }
}
 





/**
 * @title ERC20Mintable
 * @dev ERC20 minting logic
 */
contract ERC20Mintable is ERC20, MinterRole {
    /**
     * @dev Function to mint tokens
     * @param to The address that will receive the minted tokens.
     * @param value The amount of tokens to mint.
     * @return A boolean that indicates if the operation was successful.
     */
    function mint(address to, uint256 value) public onlyMinter returns (bool) {
        _mint(to, value);
        return true;
    }
}
 




/**
 * @title Capped token
 * @dev Mintable token with a token cap.
 */
contract ERC20Capped is ERC20Mintable {
    uint256 private _cap;

    constructor (uint256 cap) public {
        require(cap > 0);
        _cap = cap;
    }

    /**
     * @return the cap for the token minting.
     */
    function cap() public view returns (uint256) {
        return _cap;
    }

    function _mint(address account, uint256 value) internal {
        require(totalSupply().add(value) <= _cap);
        super._mint(account, value);
    }
}
 








/**
 * @title Arrays
 * @dev Utility library of inline array functions
 */
library Arrays {
    /**
     * @dev Upper bound search function which is kind of binary search algorithm. It searches sorted
     * array to find index of the element value. If element is found then returns its index otherwise
     * it returns index of first element which is greater than searched value. If searched element is
     * bigger than any array element function then returns first index after last element (i.e. all
     * values inside the array are smaller than the target). Complexity O(log n).
     * @param array The array sorted in ascending order.
     * @param element The element's value to be found.
     * @return The calculated index value. Returns 0 for empty array.
     */
    function findUpperBound(uint256[] storage array, uint256 element) internal view returns (uint256) {
        if (array.length == 0) {
            return 0;
        }

        uint256 low = 0;
        uint256 high = array.length;

        while (low < high) {
            uint256 mid = Math.average(low, high);

            // Note that mid will always be strictly less than high (i.e. it will be a valid array index)
            // because Math.average rounds down (it does integer division with truncation).
            if (array[mid] > element) {
                high = mid;
            } else {
                low = mid + 1;
            }
        }

        // At this point `low` is the exclusive upper bound. We will return the inclusive upper bound.
        if (low > 0 && array[low - 1] == element) {
            return low - 1;
        } else {
            return low;
        }
    }
}





/**
 * @title Counters
 * @author Matt Condon (@shrugs)
 * @dev Provides counters that can only be incremented or decremented by one. This can be used e.g. to track the number
 * of elements in a mapping, issuing ERC721 ids, or counting request ids
 *
 * Include with `using Counters for Counters.Counter;`
 * Since it is not possible to overflow a 256 bit integer with increments of one, `increment` can skip the SafeMath
 * overflow check, thereby saving gas. This does assume however correct usage, in that the underlying `_value` is never
 * directly accessed.
 */
library Counters {
    using SafeMath for uint256;

    struct Counter {
        // This variable should never be directly accessed by users of the library: interactions must be restricted to
        // the library's function. As of Solidity v0.5.2, this cannot be enforced, though there is a proposal to add
        // this feature: see https://github.com/ethereum/solidity/issues/4637
        uint256 _value; // default: 0
    }

    function current(Counter storage counter) internal view returns (uint256) {
        return counter._value;
    }

    function increment(Counter storage counter) internal {
        counter._value += 1;
    }

    function decrement(Counter storage counter) internal {
        counter._value = counter._value.sub(1);
    }
}



/**
 * @title ERC20 token with snapshots.
 * @dev Inspired by Jordi Baylina's MiniMeToken to record historical balances:
 * https://github.com/Giveth/minime/blob/ea04d950eea153a04c51fa510b068b9dded390cb/contracts/MiniMeToken.sol
 * When a snapshot is made, the balances and totalSupply at the time of the snapshot are recorded for later
 * access.
 *
 * To make a snapshot, call the `snapshot` function, which will emit the `Snapshot` event and return a snapshot id.
 * To get the total supply from a snapshot, call the function `totalSupplyAt` with the snapshot id.
 * To get the balance of an account from a snapshot, call the `balanceOfAt` function with the snapshot id and the
 * account address.
 * @author Validity Labs AG <[email protected]>
 */
contract ERC20Snapshot is ERC20 {
    using SafeMath for uint256;
    using Arrays for uint256[];
    using Counters for Counters.Counter;

    // Snapshotted values have arrays of ids and the value corresponding to that id. These could be an array of a
    // Snapshot struct, but that would impede usage of functions that work on an array.
    struct Snapshots {
        uint256[] ids;
        uint256[] values;
    }

    mapping (address => Snapshots) private _accountBalanceSnapshots;
    Snapshots private _totalSupplySnaphots;

    // Snapshot ids increase monotonically, with the first value being 1. An id of 0 is invalid.
    Counters.Counter private _currentSnapshotId;

    event Snapshot(uint256 id);

    // Creates a new snapshot id. Balances are only stored in snapshots on demand: unless a snapshot was taken, a
    // balance change will not be recorded. This means the extra added cost of storing snapshotted balances is only paid
    // when required, but is also flexible enough that it allows for e.g. daily snapshots.
    function snapshot() public returns (uint256) {
        _currentSnapshotId.increment();

        uint256 currentId = _currentSnapshotId.current();
        emit Snapshot(currentId);
        return currentId;
    }

    function balanceOfAt(address account, uint256 snapshotId) public view returns (uint256) {
        (bool snapshotted, uint256 value) = _valueAt(snapshotId, _accountBalanceSnapshots[account]);

        return snapshotted ? value : balanceOf(account);
    }

    function totalSupplyAt(uint256 snapshotId) public view returns(uint256) {
        (bool snapshotted, uint256 value) = _valueAt(snapshotId, _totalSupplySnaphots);

        return snapshotted ? value : totalSupply();
    }

    // _transfer, _mint and _burn are the only functions where the balances are modified, so it is there that the
    // snapshots are updated. Note that the update happens _before_ the balance change, with the pre-modified value.
    // The same is true for the total supply and _mint and _burn.
    function _transfer(address from, address to, uint256 value) internal {
        _updateAccountSnapshot(from);
        _updateAccountSnapshot(to);

        super._transfer(from, to, value);
    }

    function _mint(address account, uint256 value) internal {
        _updateAccountSnapshot(account);
        _updateTotalSupplySnapshot();

        super._mint(account, value);
    }

    function _burn(address account, uint256 value) internal {
        _updateAccountSnapshot(account);
        _updateTotalSupplySnapshot();

        super._burn(account, value);
    }

    // When a valid snapshot is queried, there are three possibilities:
    //  a) The queried value was not modified after the snapshot was taken. Therefore, a snapshot entry was never
    //  created for this id, and all stored snapshot ids are smaller than the requested one. The value that corresponds
    //  to this id is the current one.
    //  b) The queried value was modified after the snapshot was taken. Therefore, there will be an entry with the
    //  requested id, and its value is the one to return.
    //  c) More snapshots were created after the requested one, and the queried value was later modified. There will be
    //  no entry for the requested id: the value that corresponds to it is that of the smallest snapshot id that is
    //  larger than the requested one.
    //
    // In summary, we need to find an element in an array, returning the index of the smallest value that is larger if
    // it is not found, unless said value doesn't exist (e.g. when all values are smaller). Arrays.findUpperBound does
    // exactly this.
    function _valueAt(uint256 snapshotId, Snapshots storage snapshots)
        private view returns (bool, uint256)
    {
        require(snapshotId > 0);
        require(snapshotId <= _currentSnapshotId.current());

        uint256 index = snapshots.ids.findUpperBound(snapshotId);

        if (index == snapshots.ids.length) {
            return (false, 0);
        } else {
            return (true, snapshots.values[index]);
        }
    }

    function _updateAccountSnapshot(address account) private {
        _updateSnapshot(_accountBalanceSnapshots[account], balanceOf(account));
    }

    function _updateTotalSupplySnapshot() private {
        _updateSnapshot(_totalSupplySnaphots, totalSupply());
    }

    function _updateSnapshot(Snapshots storage snapshots, uint256 currentValue) private {
        uint256 currentId = _currentSnapshotId.current();
        if (_lastSnapshotId(snapshots.ids) < currentId) {
            snapshots.ids.push(currentId);
            snapshots.values.push(currentValue);
        }
    }

    function _lastSnapshotId(uint256[] storage ids) private view returns (uint256) {
        if (ids.length == 0) {
            return 0;
        } else {
            return ids[ids.length - 1];
        }
    }
}



/**
 * @title Ownable
 * @dev The Ownable contract has an owner address, and provides basic authorization control
 * functions, this simplifies the implementation of "user permissions".
 */
contract Ownable {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    /**
     * @dev The Ownable constructor sets the original `owner` of the contract to the sender
     * account.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), _owner);
    }

    /**
     * @return the address of the owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner());
        _;
    }

    /**
     * @return true if `msg.sender` is the owner of the contract.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Allows the current owner to relinquish control of the contract.
     * It will not be possible to call the functions with the `onlyOwner`
     * modifier anymore.
     * @notice Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Allows the current owner to transfer control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers control of the contract to a newOwner.
     * @param newOwner The address to transfer ownership to.
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0));
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}
 


contract PictosisToken is ERC20, ERC20Detailed, ERC20Mintable, ERC20Capped, ERC20Snapshot, Ownable {
    uint public transfersEnabledDate;

    modifier onlyTransfersEnabled() {
        require(block.timestamp >= transfersEnabledDate, "Transfers disabled");
        _;
    }

    constructor(uint _enableTransfersDate, uint _cap)
        ERC20Capped(_cap)
        ERC20Mintable()
        ERC20Detailed("Pictosis Token", "PICTO", 18)
        ERC20()
        Ownable()
        public
    {
        transfersEnabledDate = _enableTransfersDate;
    }

    function areTransfersEnabled() public view returns(bool) {
        return block.timestamp >= transfersEnabledDate;
    }

    function transfer(
            address to,
            uint256 value
        )
        public
        onlyTransfersEnabled
        returns (bool)
    {
        return super.transfer(to, value);
    }

    function transferFrom(
            address from,
            address to,
            uint256 value
        )
        public
        onlyTransfersEnabled
        returns (bool)
    {
        return super.transferFrom(from, to, value);
    }

    /// @notice `msg.sender` approves `_spender` to send `_amount` tokens on
    ///  its behalf, and then a function is triggered in the contract that is
    ///  being approved, `_spender`. This allows users to use their tokens to
    ///  interact with contracts in one function call instead of two
    /// @param _spender The address of the contract able to transfer the tokens
    /// @param _amount The amount of tokens to be approved for transfer
    /// @return True if the function call was successful
    function approveAndCall(
            address _spender,
            uint256 _amount,
            bytes memory _extraData
        )
        public
        returns (bool success)
    {
        require(approve(_spender, _amount), "Couldn't approve spender");

        ApproveAndCallFallBack(_spender).receiveApproval(msg.sender, _amount, address(this), _extraData);

        return true;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"uint256","name":"_enableTransfersDate","type":"uint256"},{"internalType":"uint256","name":"_cap","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"id","type":"uint256"}],"name":"Snapshot","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"constant":false,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"addMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"_spender","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"bytes","name":"_extraData","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"areTransfersEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"balanceOfAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"renounceMinter","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"snapshot","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"snapshotId","type":"uint256"}],"name":"totalSupplyAt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"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"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"transfersEnabledDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"}]

60806040523480156200001157600080fd5b506040516200241a3803806200241a833981810160405260408110156200003757600080fd5b810190808051906020019092919080519060200190929190505050806040518060400160405280600e81526020017f506963746f73697320546f6b656e0000000000000000000000000000000000008152506040518060400160405280600581526020017f504943544f00000000000000000000000000000000000000000000000000000081525060128260039080519060200190620000d9929190620003af565b508160049080519060200190620000f2929190620003af565b5080600560006101000a81548160ff021916908360ff16021790555050505062000122336200020560201b60201c565b600081116200013057600080fd5b806007819055505033600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a381600d8190555050506200045e565b620002208160066200026660201b62001a021790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415620002a157600080fd5b620002b382826200031c60201b60201c565b15620002be57600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200035857600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003f257805160ff191683800117855562000423565b8280016001018555821562000423579182015b828111156200042257825182559160200191906001019062000405565b5b50905062000432919062000436565b5090565b6200045b91905b80821115620004575760008160009055506001016200043d565b5090565b90565b611fac806200046e6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c80638f32d59b116100de578063a457c2d711610097578063b415b8a911610071578063b415b8a9146107d9578063cae9ca51146107f7578063dd62ed3e146108f4578063f2fde38b1461096c5761018e565b8063a457c2d7146106b1578063a9059cbb14610717578063aa271e1a1461077d5761018e565b80638f32d59b1461055e57806395d89b41146105805780639711715a14610603578063981b24d014610621578063983b2d561461066357806398650275146106a75761018e565b8063379ef1951161014b5780634ee2cd7e116101255780634ee2cd7e1461045057806370a08231146104b2578063715018a61461050a5780638da5cb5b146105145761018e565b8063379ef19514610362578063395093511461038457806340c10f19146103ea5761018e565b806306fdde0314610193578063095ea7b31461021657806318160ddd1461027c57806323b872dd1461029a578063313ce56714610320578063355274ea14610344575b600080fd5b61019b6109b0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101db5780820151818401526020810190506101c0565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102626004803603604081101561022c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a52565b604051808215151515815260200191505060405180910390f35b610284610a69565b6040518082815260200191505060405180910390f35b610306600480360360608110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a73565b604051808215151515815260200191505060405180910390f35b610328610b01565b604051808260ff1660ff16815260200191505060405180910390f35b61034c610b18565b6040518082815260200191505060405180910390f35b61036a610b22565b604051808215151515815260200191505060405180910390f35b6103d06004803603604081101561039a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2f565b604051808215151515815260200191505060405180910390f35b6104366004803603604081101561040057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd4565b604051808215151515815260200191505060405180910390f35b61049c6004803603604081101561046657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b6040518082815260200191505060405180910390f35b6104f4600480360360208110156104c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c6c565b6040518082815260200191505060405180910390f35b610512610cb4565b005b61051c610d86565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610566610db0565b604051808215151515815260200191505060405180910390f35b610588610e08565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c85780820151818401526020810190506105ad565b50505050905090810190601f1680156105f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61060b610eaa565b6040518082815260200191505060405180910390f35b61064d6004803603602081101561063757600080fd5b8101908080359060200190929190505050610f02565b6040518082815260200191505060405180910390f35b6106a56004803603602081101561067957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b005b6106af610f51565b005b6106fd600480360360408110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f5c565b604051808215151515815260200191505060405180910390f35b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611001565b604051808215151515815260200191505060405180910390f35b6107bf6004803603602081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108d565b604051808215151515815260200191505060405180910390f35b6107e16110aa565b6040518082815260200191505060405180910390f35b6108da6004803603606081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561085457600080fd5b82018360208201111561086657600080fd5b8035906020019184600183028401116401000000008311171561088857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110b0565b604051808215151515815260200191505060405180910390f35b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611279565b6040518082815260200191505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611300565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b5050505050905090565b6000610a5f33848461131d565b6001905092915050565b6000600254905090565b6000600d54421015610aed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73666572732064697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b610af884848461147c565b90509392505050565b6000600560009054906101000a900460ff16905090565b6000600754905090565b6000600d54421015905090565b6000610bca3384610bc585600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b61131d565b6001905092915050565b6000610bdf3361108d565b610be857600080fd5b610bf2838361154c565b6001905092915050565b6000806000610c4984600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061156b565b9150915081610c6057610c5b85610c6c565b610c62565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cbc610db0565b610cc557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea05780601f10610e7557610100808354040283529160200191610ea0565b820191906000526020600020905b815481529060010190602001808311610e8357829003601f168201915b5050505050905090565b6000610eb6600b6115f3565b6000610ec2600b611609565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67816040518082815260200191505060405180910390a18091505090565b6000806000610f1284600961156b565b9150915081610f2857610f23610a69565b610f2a565b805b92505050919050565b610f3c3361108d565b610f4557600080fd5b610f4e81611617565b50565b610f5a33611671565b565b6000610ff73384610ff285600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b61131d565b6001905092915050565b6000600d5442101561107b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73666572732064697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b61108583836116eb565b905092915050565b60006110a382600661170290919063ffffffff16565b9050919050565b600d5481565b60006110bc8484610a52565b61112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f756c646e277420617070726f7665207370656e646572000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156112075780820151818401526020810190506111ec565b50505050905090810190601f1680156112345780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561125657600080fd5b505af115801561126a573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611308610db0565b61131157600080fd5b61131a81611794565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139157600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061148984848461188e565b611522843361151d85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b61131d565b600190509392505050565b60008082840190508381101561154257600080fd5b8091505092915050565b611555826118b0565b61155d611903565b6115678282611917565b5050565b6000806000841161157b57600080fd5b611585600b611609565b84111561159157600080fd5b60006115a9858560000161194d90919063ffffffff16565b905083600001805490508114156115ca5760008080905092509250506115ec565b60018460010182815481106115db57fe5b906000526020600020015492509250505b9250929050565b6001816000016000828254019250508190555050565b600081600001549050919050565b61162b816006611a0290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611685816006611aae90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000828211156116da57600080fd5b600082840390508091505092915050565b60006116f833848461188e565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173d57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611897836118b0565b6118a0826118b0565b6118ab838383611b59565b505050565b611900600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118fb83610c6c565b611d23565b50565b6119156009611910610a69565b611d23565b565b60075461193482611926610a69565b61152d90919063ffffffff16565b111561193f57600080fd5b6119498282611da6565b5050565b6000808380549050141561196457600090506119fc565b60008090506000848054905090505b808210156119bc5760006119878383611ef8565b90508486828154811061199657fe5b906000526020600020015411156119af578091506119b6565b6001810192505b50611973565b6000821180156119e45750838560018403815481106119d757fe5b9060005260206000200154145b156119f65760018203925050506119fc565b81925050505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a3c57600080fd5b611a468282611702565b15611a5057600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ae857600080fd5b611af28282611702565b611afb57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9357600080fd5b611be4816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611d2f600b611609565b905080611d3e84600001611f3a565b1015611da15782600001819080600181540180825580915050906001820390600052602060002001600090919290919091505550826001018290806001815401808255809150509060018203906000526020600020016000909192909190915055505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611de057600080fd5b611df58160025461152d90919063ffffffff16565b600281905550611e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006002808381611f0557fe5b0660028581611f1057fe5b060181611f1957fe5b0460028381611f2457fe5b0460028581611f2f57fe5b040101905092915050565b60008082805490501415611f515760009050611f72565b81600183805490500381548110611f6457fe5b906000526020600020015490505b91905056fea265627a7a723158209262c222750b5e03d0c7c09213061195c4d10d73b2af0c59499feb8058174d6b64736f6c634300050d0032000000000000000000000000000000000000000000000000000000005e0e84000000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c80638f32d59b116100de578063a457c2d711610097578063b415b8a911610071578063b415b8a9146107d9578063cae9ca51146107f7578063dd62ed3e146108f4578063f2fde38b1461096c5761018e565b8063a457c2d7146106b1578063a9059cbb14610717578063aa271e1a1461077d5761018e565b80638f32d59b1461055e57806395d89b41146105805780639711715a14610603578063981b24d014610621578063983b2d561461066357806398650275146106a75761018e565b8063379ef1951161014b5780634ee2cd7e116101255780634ee2cd7e1461045057806370a08231146104b2578063715018a61461050a5780638da5cb5b146105145761018e565b8063379ef19514610362578063395093511461038457806340c10f19146103ea5761018e565b806306fdde0314610193578063095ea7b31461021657806318160ddd1461027c57806323b872dd1461029a578063313ce56714610320578063355274ea14610344575b600080fd5b61019b6109b0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101db5780820151818401526020810190506101c0565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102626004803603604081101561022c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a52565b604051808215151515815260200191505060405180910390f35b610284610a69565b6040518082815260200191505060405180910390f35b610306600480360360608110156102b057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610a73565b604051808215151515815260200191505060405180910390f35b610328610b01565b604051808260ff1660ff16815260200191505060405180910390f35b61034c610b18565b6040518082815260200191505060405180910390f35b61036a610b22565b604051808215151515815260200191505060405180910390f35b6103d06004803603604081101561039a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b2f565b604051808215151515815260200191505060405180910390f35b6104366004803603604081101561040057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bd4565b604051808215151515815260200191505060405180910390f35b61049c6004803603604081101561046657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610bfc565b6040518082815260200191505060405180910390f35b6104f4600480360360208110156104c857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c6c565b6040518082815260200191505060405180910390f35b610512610cb4565b005b61051c610d86565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610566610db0565b604051808215151515815260200191505060405180910390f35b610588610e08565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105c85780820151818401526020810190506105ad565b50505050905090810190601f1680156105f55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61060b610eaa565b6040518082815260200191505060405180910390f35b61064d6004803603602081101561063757600080fd5b8101908080359060200190929190505050610f02565b6040518082815260200191505060405180910390f35b6106a56004803603602081101561067957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f33565b005b6106af610f51565b005b6106fd600480360360408110156106c757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610f5c565b604051808215151515815260200191505060405180910390f35b6107636004803603604081101561072d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611001565b604051808215151515815260200191505060405180910390f35b6107bf6004803603602081101561079357600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108d565b604051808215151515815260200191505060405180910390f35b6107e16110aa565b6040518082815260200191505060405180910390f35b6108da6004803603606081101561080d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291908035906020019064010000000081111561085457600080fd5b82018360208201111561086657600080fd5b8035906020019184600183028401116401000000008311171561088857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506110b0565b604051808215151515815260200191505060405180910390f35b6109566004803603604081101561090a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611279565b6040518082815260200191505060405180910390f35b6109ae6004803603602081101561098257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611300565b005b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610a485780601f10610a1d57610100808354040283529160200191610a48565b820191906000526020600020905b815481529060010190602001808311610a2b57829003601f168201915b5050505050905090565b6000610a5f33848461131d565b6001905092915050565b6000600254905090565b6000600d54421015610aed576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73666572732064697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b610af884848461147c565b90509392505050565b6000600560009054906101000a900460ff16905090565b6000600754905090565b6000600d54421015905090565b6000610bca3384610bc585600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b61131d565b6001905092915050565b6000610bdf3361108d565b610be857600080fd5b610bf2838361154c565b6001905092915050565b6000806000610c4984600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002061156b565b9150915081610c6057610c5b85610c6c565b610c62565b805b9250505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cbc610db0565b610cc557600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ea05780601f10610e7557610100808354040283529160200191610ea0565b820191906000526020600020905b815481529060010190602001808311610e8357829003601f168201915b5050505050905090565b6000610eb6600b6115f3565b6000610ec2600b611609565b90507f8030e83b04d87bef53480e26263266d6ca66863aa8506aca6f2559d18aa1cb67816040518082815260200191505060405180910390a18091505090565b6000806000610f1284600961156b565b9150915081610f2857610f23610a69565b610f2a565b805b92505050919050565b610f3c3361108d565b610f4557600080fd5b610f4e81611617565b50565b610f5a33611671565b565b6000610ff73384610ff285600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b61131d565b6001905092915050565b6000600d5442101561107b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f5472616e73666572732064697361626c6564000000000000000000000000000081525060200191505060405180910390fd5b61108583836116eb565b905092915050565b60006110a382600661170290919063ffffffff16565b9050919050565b600d5481565b60006110bc8484610a52565b61112e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f436f756c646e277420617070726f7665207370656e646572000000000000000081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b838110156112075780820151818401526020810190506111ec565b50505050905090810190601f1680156112345780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b15801561125657600080fd5b505af115801561126a573d6000803e3d6000fd5b50505050600190509392505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611308610db0565b61131157600080fd5b61131a81611794565b50565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561135757600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561139157600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600061148984848461188e565b611522843361151d85600160008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b61131d565b600190509392505050565b60008082840190508381101561154257600080fd5b8091505092915050565b611555826118b0565b61155d611903565b6115678282611917565b5050565b6000806000841161157b57600080fd5b611585600b611609565b84111561159157600080fd5b60006115a9858560000161194d90919063ffffffff16565b905083600001805490508114156115ca5760008080905092509250506115ec565b60018460010182815481106115db57fe5b906000526020600020015492509250505b9250929050565b6001816000016000828254019250508190555050565b600081600001549050919050565b61162b816006611a0290919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b611685816006611aae90919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b6000828211156116da57600080fd5b600082840390508091505092915050565b60006116f833848461188e565b6001905092915050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561173d57600080fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156117ce57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611897836118b0565b6118a0826118b0565b6118ab838383611b59565b505050565b611900600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206118fb83610c6c565b611d23565b50565b6119156009611910610a69565b611d23565b565b60075461193482611926610a69565b61152d90919063ffffffff16565b111561193f57600080fd5b6119498282611da6565b5050565b6000808380549050141561196457600090506119fc565b60008090506000848054905090505b808210156119bc5760006119878383611ef8565b90508486828154811061199657fe5b906000526020600020015411156119af578091506119b6565b6001810192505b50611973565b6000821180156119e45750838560018403815481106119d757fe5b9060005260206000200154145b156119f65760018203925050506119fc565b81925050505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a3c57600080fd5b611a468282611702565b15611a5057600080fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611ae857600080fd5b611af28282611702565b611afb57600080fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b9357600080fd5b611be4816000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546116cb90919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611c77816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000611d2f600b611609565b905080611d3e84600001611f3a565b1015611da15782600001819080600181540180825580915050906001820390600052602060002001600090919290919091505550826001018290806001815401808255809150509060018203906000526020600020016000909192909190915055505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611de057600080fd5b611df58160025461152d90919063ffffffff16565b600281905550611e4c816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461152d90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60006002808381611f0557fe5b0660028581611f1057fe5b060181611f1957fe5b0460028381611f2457fe5b0460028581611f2f57fe5b040101905092915050565b60008082805490501415611f515760009050611f72565b81600183805490500381548110611f6457fe5b906000526020600020015490505b91905056fea265627a7a723158209262c222750b5e03d0c7c09213061195c4d10d73b2af0c59499feb8058174d6b64736f6c634300050d0032

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000000000000000000000000000000000005e0e84000000000000000000000000000000000000000000033b2e3c9fd0803ce8000000

-----Decoded View---------------
Arg [0] : _enableTransfersDate (uint256): 1578009600
Arg [1] : _cap (uint256): 1000000000000000000000000000

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000000000000000000000000000000000005e0e8400
Arg [1] : 0000000000000000000000000000000000000000033b2e3c9fd0803ce8000000


Deployed Bytecode Sourcemap

26585:2097:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26585:2097:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13957:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;13957:83:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8299:148;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8299:148:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6452:91;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27502:249;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27502:249:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14273:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;15195:75;;;:::i;:::-;;;;;;;;;;;;;;;;;;;27156:122;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;9674:203;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9674:203:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14736:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;14736:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;20616:258;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20616:258:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6762:106;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6762:106:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25810:140;;;:::i;:::-;;25020:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;25355:92;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;14107:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;14107:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20391:217;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20882:224;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20882:224:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4226:92;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4226:92:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4326:77;;;:::i;:::-;;10408:213;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10408:213:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;27286:208;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;27286:208:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;4109:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4109:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;26691:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;28277:402;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28277:402:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;28277:402:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28277:402:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28277:402:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;28277:402:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7207:131;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7207:131:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;26127:109;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26127:109:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;13957:83;13994:13;14027:5;14020:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13957:83;:::o;8299:148::-;8364:4;8381:36;8390:10;8402:7;8411:5;8381:8;:36::i;:::-;8435:4;8428:11;;8299:148;;;;:::o;6452:91::-;6496:7;6523:12;;6516:19;;6452:91;:::o;27502:249::-;27679:4;26802:20;;26783:15;:39;;26775:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27708:35;27727:4;27733:2;27737:5;27708:18;:35::i;:::-;27701:42;;27502:249;;;;;:::o;14273:83::-;14314:5;14339:9;;;;;;;;;;;14332:16;;14273:83;:::o;15195:75::-;15231:7;15258:4;;15251:11;;15195:75;:::o;27156:122::-;27207:4;27250:20;;27231:15;:39;;27224:46;;27156:122;:::o;9674:203::-;9754:4;9771:76;9780:10;9792:7;9801:45;9835:10;9801:8;:20;9810:10;9801:20;;;;;;;;;;;;;;;:29;9822:7;9801:29;;;;;;;;;;;;;;;;:33;;:45;;;;:::i;:::-;9771:8;:76::i;:::-;9865:4;9858:11;;9674:203;;;;:::o;14736:131::-;14804:4;4060:20;4069:10;4060:8;:20::i;:::-;4052:29;;;;;;14821:16;14827:2;14831:5;14821;:16::i;:::-;14855:4;14848:11;;14736:131;;;;:::o;20616:258::-;20695:7;20716:16;20734:13;20751:55;20760:10;20772:24;:33;20797:7;20772:33;;;;;;;;;;;;;;;20751:8;:55::i;:::-;20715:91;;;;20826:11;:40;;20848:18;20858:7;20848:9;:18::i;:::-;20826:40;;;20840:5;20826:40;20819:47;;;;20616:258;;;;:::o;6762:106::-;6817:7;6844:9;:16;6854:5;6844:16;;;;;;;;;;;;;;;;6837:23;;6762:106;;;:::o;25810:140::-;25232:9;:7;:9::i;:::-;25224:18;;;;;;25909:1;25872:40;;25893:6;;;;;;;;;;;25872:40;;;;;;;;;;;;25940:1;25923:6;;:19;;;;;;;;;;;;;;;;;;25810:140::o;25020:79::-;25058:7;25085:6;;;;;;;;;;;25078:13;;25020:79;:::o;25355:92::-;25395:4;25433:6;;;;;;;;;;;25419:20;;:10;:20;;;25412:27;;25355:92;:::o;14107:87::-;14146:13;14179:7;14172:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14107:87;:::o;20391:217::-;20427:7;20447:30;:18;:28;:30::i;:::-;20490:17;20510:28;:18;:26;:28::i;:::-;20490:48;;20554:19;20563:9;20554:19;;;;;;;;;;;;;;;;;;20591:9;20584:16;;;20391:217;:::o;20882:224::-;20945:7;20966:16;20984:13;21001:42;21010:10;21022:20;21001:8;:42::i;:::-;20965:78;;;;21063:11;:35;;21085:13;:11;:13::i;:::-;21063:35;;;21077:5;21063:35;21056:42;;;;20882:224;;;:::o;4226:92::-;4060:20;4069:10;4060:8;:20::i;:::-;4052:29;;;;;;4291:19;4302:7;4291:10;:19::i;:::-;4226:92;:::o;4326:77::-;4370:25;4384:10;4370:13;:25::i;:::-;4326:77::o;10408:213::-;10493:4;10510:81;10519:10;10531:7;10540:50;10574:15;10540:8;:20;10549:10;10540:20;;;;;;;;;;;;;;;:29;10561:7;10540:29;;;;;;;;;;;;;;;;:33;;:50;;;;:::i;:::-;10510:8;:81::i;:::-;10609:4;10602:11;;10408:213;;;;:::o;27286:208::-;27432:4;26802:20;;26783:15;:39;;26775:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27461:25;27476:2;27480:5;27461:14;:25::i;:::-;27454:32;;27286:208;;;;:::o;4109:109::-;4165:4;4189:21;4202:7;4189:8;:12;;:21;;;;:::i;:::-;4182:28;;4109:109;;;:::o;26691:32::-;;;;:::o;28277:402::-;28445:12;28483:26;28491:8;28501:7;28483;:26::i;:::-;28475:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28574:8;28551:48;;;28600:10;28612:7;28629:4;28636:10;28551:96;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;28551:96:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28551:96:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;28551:96:0;;;;28667:4;28660:11;;28277:402;;;;;:::o;7207:131::-;7279:7;7306:8;:15;7315:5;7306:15;;;;;;;;;;;;;;;:24;7322:7;7306:24;;;;;;;;;;;;;;;;7299:31;;7207:131;;;;:::o;26127:109::-;25232:9;:7;:9::i;:::-;25224:18;;;;;;26200:28;26219:8;26200:18;:28::i;:::-;26127:109;:::o;12507:254::-;12619:1;12600:21;;:7;:21;;;;12592:30;;;;;;12658:1;12641:19;;:5;:19;;;;12633:28;;;;;;12701:5;12674:8;:15;12683:5;12674:15;;;;;;;;;;;;;;;:24;12690:7;12674:24;;;;;;;;;;;;;;;:32;;;;12738:7;12722:31;;12731:5;12722:31;;;12747:5;12722:31;;;;;;;;;;;;;;;;;;12507:254;;;:::o;8920:228::-;8999:4;9016:26;9026:4;9032:2;9036:5;9016:9;:26::i;:::-;9053:65;9062:4;9068:10;9080:37;9111:5;9080:8;:14;9089:4;9080:14;;;;;;;;;;;;;;;:26;9095:10;9080:26;;;;;;;;;;;;;;;;:30;;:37;;;;:::i;:::-;9053:8;:65::i;:::-;9136:4;9129:11;;8920:228;;;;;:::o;3298:150::-;3356:7;3376:9;3392:1;3388;:5;3376:17;;3417:1;3412;:6;;3404:15;;;;;;3439:1;3432:8;;;3298:150;;;;:::o;21620:185::-;21687:31;21710:7;21687:22;:31::i;:::-;21729:28;:26;:28::i;:::-;21770:27;21782:7;21791:5;21770:11;:27::i;:::-;21620:185;;:::o;23078:453::-;23176:4;23182:7;23228:1;23215:10;:14;23207:23;;;;;;23263:28;:18;:26;:28::i;:::-;23249:10;:42;;23241:51;;;;;;23305:13;23321:40;23350:10;23321:9;:13;;:28;;:40;;;;:::i;:::-;23305:56;;23387:9;:13;;:20;;;;23378:5;:29;23374:150;;;23432:5;23439:1;23424:17;;;;;;;;;;23374:150;23482:4;23488:9;:16;;23505:5;23488:23;;;;;;;;;;;;;;;;23474:38;;;;;23078:453;;;;;;:::o;18333:91::-;18415:1;18397:7;:14;;;:19;;;;;;;;;;;18333:91;:::o;18211:114::-;18276:7;18303;:14;;;18296:21;;18211:114;;;:::o;4411:122::-;4468:21;4481:7;4468:8;:12;;:21;;;;:::i;:::-;4517:7;4505:20;;;;;;;;;;;;4411:122;:::o;4541:130::-;4601:24;4617:7;4601:8;:15;;:24;;;;:::i;:::-;4655:7;4641:22;;;;;;;;;;;;4541:130;:::o;3060:150::-;3118:7;3151:1;3146;:6;;3138:15;;;;;;3164:9;3180:1;3176;:5;3164:17;;3201:1;3194:8;;;3060:150;;;;:::o;7512:140::-;7573:4;7590:32;7600:10;7612:2;7616:5;7590:9;:32::i;:::-;7640:4;7633:11;;7512:140;;;;:::o;1663:165::-;1735:4;1779:1;1760:21;;:7;:21;;;;1752:30;;;;;;1800:4;:11;;:20;1812:7;1800:20;;;;;;;;;;;;;;;;;;;;;;;;;1793:27;;1663:165;;;;:::o;26386:187::-;26480:1;26460:22;;:8;:22;;;;26452:31;;;;;;26528:8;26499:38;;26520:6;;;;;;;;;;;26499:38;;;;;;;;;;;;26557:8;26548:6;;:17;;;;;;;;;;;;;;;;;;26386:187;:::o;21414:198::-;21494:28;21517:4;21494:22;:28::i;:::-;21533:26;21556:2;21533:22;:26::i;:::-;21572:32;21588:4;21594:2;21598:5;21572:15;:32::i;:::-;21414:198;;;:::o;23539:146::-;23607:70;23623:24;:33;23648:7;23623:33;;;;;;;;;;;;;;;23658:18;23668:7;23658:9;:18::i;:::-;23607:15;:70::i;:::-;23539:146;:::o;23693:117::-;23750:52;23766:20;23788:13;:11;:13::i;:::-;23750:15;:52::i;:::-;23693:117::o;15278:154::-;15381:4;;15353:24;15371:5;15353:13;:11;:13::i;:::-;:17;;:24;;;;:::i;:::-;:32;;15345:41;;;;;;15397:27;15409:7;15418:5;15397:11;:27::i;:::-;15278:154;;:::o;16252:918::-;16341:7;16381:1;16365:5;:12;;;;:17;16361:58;;;16406:1;16399:8;;;;16361:58;16431:11;16445:1;16431:15;;16457:12;16472:5;:12;;;;16457:27;;16497:424;16510:4;16504:3;:10;16497:424;;;16531:11;16545:23;16558:3;16563:4;16545:12;:23::i;:::-;16531:37;;16802:7;16789:5;16795:3;16789:10;;;;;;;;;;;;;;;;:20;16785:125;;;16837:3;16830:10;;16785:125;;;16893:1;16887:3;:7;16881:13;;16785:125;16497:424;;;;17047:1;17041:3;:7;:36;;;;;17070:7;17052:5;17064:1;17058:3;:7;17052:14;;;;;;;;;;;;;;;;:25;17041:36;17037:126;;;17107:1;17101:3;:7;17094:14;;;;;;17037:126;17148:3;17141:10;;;;16252:918;;;;;:::o;1115:186::-;1211:1;1192:21;;:7;:21;;;;1184:30;;;;;;1234:18;1238:4;1244:7;1234:3;:18::i;:::-;1233:19;1225:28;;;;;;1289:4;1266;:11;;:20;1278:7;1266:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;1115:186;;:::o;1380:189::-;1479:1;1460:21;;:7;:21;;;;1452:30;;;;;;1501:18;1505:4;1511:7;1501:3;:18::i;:::-;1493:27;;;;;;1556:5;1533:4;:11;;:20;1545:7;1533:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1380:189;;:::o;10848:262::-;10950:1;10936:16;;:2;:16;;;;10928:25;;;;;;10984:26;11004:5;10984:9;:15;10994:4;10984:15;;;;;;;;;;;;;;;;:19;;:26;;;;:::i;:::-;10966:9;:15;10976:4;10966:15;;;;;;;;;;;;;;;:44;;;;11037:24;11055:5;11037:9;:13;11047:2;11037:13;;;;;;;;;;;;;;;;:17;;:24;;;;:::i;:::-;11021:9;:13;11031:2;11021:13;;;;;;;;;;;;;;;:40;;;;11092:2;11077:25;;11086:4;11077:25;;;11096:5;11077:25;;;;;;;;;;;;;;;;;;10848:262;;;:::o;23818:315::-;23913:17;23933:28;:18;:26;:28::i;:::-;23913:48;;24009:9;23976:30;23992:9;:13;;23976:15;:30::i;:::-;:42;23972:154;;;24035:9;:13;;24054:9;24035:29;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;24035:29:0;;;;;;;;;;;;;;;;;;;;;;24079:9;:16;;24101:12;24079:35;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;24079:35:0;;;;;;;;;;;;;;;;;;;;;;23972:154;23818:315;;;:::o;11462:269::-;11556:1;11537:21;;:7;:21;;;;11529:30;;;;;;11587:23;11604:5;11587:12;;:16;;:23;;;;:::i;:::-;11572:12;:38;;;;11642:29;11665:5;11642:9;:18;11652:7;11642:18;;;;;;;;;;;;;;;;:22;;:29;;;;:::i;:::-;11621:9;:18;11631:7;11621:18;;;;;;;;;;;;;;;:50;;;;11708:7;11687:36;;11704:1;11687:36;;;11717:5;11687:36;;;;;;;;;;;;;;;;;;11462:269;;:::o;667:193::-;729:7;850:1;845;841;:5;;;;;;837:1;833;:5;;;;;;:13;832:19;;;;;;826:1;822;:5;;;;;;816:1;812;:5;;;;;;811:17;:41;804:48;;667:193;;;;:::o;24141:212::-;24211:7;24249:1;24235:3;:10;;;;:15;24231:115;;;24274:1;24267:8;;;;24231:115;24315:3;24332:1;24319:3;:10;;;;:14;24315:19;;;;;;;;;;;;;;;;24308:26;;24141:212;;;;:::o

Swarm Source

bzzr://9262c222750b5e03d0c7c09213061195c4d10d73b2af0c59499feb8058174d6b

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

OVERVIEW

A crowdstorm design platform open ecosystem where thousands of global talents solve creative tasks based on a briefing to get paid & rewarded for their outstanding work & community engagement.

Validator Index Block Amount
View All Withdrawals

Txn Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.