ETH Price: $2,706.29 (-2.07%)

Token

EOS.Pizza (EPS)
 

Overview

Max Total Supply

50,181,251.2312 EPS

Holders

24

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2,515,388.889 EPS

Value
$0.00
0xeb92486a795214ddc799d7b905e9323982ff4f37
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
EosPizzaSliceDonationraiser

Compiler Version
v0.4.18+commit.9cf6e910

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-03-09
*/

pragma solidity ^0.4.18;

/**
*
*    I  N    P  I  Z  Z  A     W  E     C  R  U  S  T
*  
*    ______ ____   _____       _____ _
*   |  ____/ __ \ / ____|     |  __ (_)
*   | |__ | |  | | (___       | |__) | __________ _
*   |  __|| |  | |\___ \      |  ___/ |_  /_  / _` |
*   | |___| |__| |____) |  _  | |   | |/ / / / (_| |
*   |______\____/|_____/  (_) |_|   |_/___/___\__,_|
*
*
*
*   CHECK HTTPS://EOS.PIZZA ON HOW TO GET YOUR SLICE
*   END: 18 MAY 2018
*
*   This is for the fun. Thank you token factory for your smart contract inspiration.
*   Jummy & crusty. Get your 🍕EPS while it's hot. 
*
*   https://eos.pizza
*
*
**/

// File: contracts\configs\EosPizzaSliceConfig.sol


/**
 * @title EosPizzaSliceConfig
 *
 * @dev The static configuration for the EOS Pizza Slice.
 */
contract EosPizzaSliceConfig {
    // The name of the token.
    string constant NAME = "EOS.Pizza";

    // The symbol of the token.
    string constant SYMBOL = "EPS";

    // The number of decimals for the token.
    uint8 constant DECIMALS = 18;  // Same as ethers.

    // Decimal factor for multiplication purposes.
    uint constant DECIMALS_FACTOR = 10 ** uint(DECIMALS);
}

// File: contracts\interfaces\ERC20TokenInterface.sol

/**
 * @dev The standard ERC20 Token interface.
 */
contract ERC20TokenInterface {
    uint public totalSupply;  /* shorthand for public function and a property */
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
    function balanceOf(address _owner) public constant returns (uint balance);
    function transfer(address _to, uint _value) public returns (bool success);
    function transferFrom(address _from, address _to, uint _value) public returns (bool success);
    function approve(address _spender, uint _value) public returns (bool success);
    function allowance(address _owner, address _spender) public constant returns (uint remaining);

}

// File: contracts\libraries\SafeMath.sol

/**
 * @dev Library that helps prevent integer overflows and underflows,
 * inspired by https://github.com/OpenZeppelin/zeppelin-solidity
 */
library SafeMath {
    function plus(uint a, uint b) internal pure returns (uint) {
        uint c = a + b;
        assert(c >= a);

        return c;
    }

    function minus(uint a, uint b) internal pure returns (uint) {
        assert(b <= a);

        return a - b;
    }

    function mul(uint a, uint b) internal pure returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);

        return c;
    }

    function div(uint a, uint b) internal pure returns (uint) {
        uint c = a / b;

        return c;
    }
}

// File: contracts\traits\ERC20Token.sol

/**
 * @title ERC20Token
 *
 * @dev Implements the operations declared in the `ERC20TokenInterface`.
 */
contract ERC20Token is ERC20TokenInterface {
    using SafeMath for uint;

    // Token account balances.
    mapping (address => uint) balances;

    // Delegated number of tokens to transfer.
    mapping (address => mapping (address => uint)) allowed;



    /**
     * @dev Checks the balance of a certain address.
     *
     * @param _account The address which's balance will be checked.
     *
     * @return Returns the balance of the `_account` address.
     */
    function balanceOf(address _account) public constant returns (uint balance) {
        return balances[_account];
    }

    /**
     * @dev Transfers tokens from one address to another.
     *
     * @param _to The target address to which the `_value` number of tokens will be sent.
     * @param _value The number of tokens to send.
     *
     * @return Whether the transfer was successful or not.
     */
    function transfer(address _to, uint _value) public returns (bool success) {
        if (balances[msg.sender] < _value || _value == 0) {

            return false;
        }

        balances[msg.sender] -= _value;
        balances[_to] = balances[_to].plus(_value);


        Transfer(msg.sender, _to, _value);

        return true;
    }

    /**
     * @dev Send `_value` tokens to `_to` from `_from` if `_from` has approved the process.
     *
     * @param _from The address of the sender.
     * @param _to The address of the recipient.
     * @param _value The number of tokens to be transferred.
     *
     * @return Whether the transfer was successful or not.
     */
    function transferFrom(address _from, address _to, uint _value) public returns (bool success) {
        if (balances[_from] < _value || allowed[_from][msg.sender] < _value || _value == 0) {
            return false;
        }

        balances[_to] = balances[_to].plus(_value);
        balances[_from] -= _value;
        allowed[_from][msg.sender] -= _value;


        Transfer(_from, _to, _value);

        return true;
    }

    /**
     * @dev Allows another contract to spend some tokens on your behalf.
     *
     * @param _spender The address of the account which will be approved for transfer of tokens.
     * @param _value The number of tokens to be approved for transfer.
     *
     * @return Whether the approval was successful or not.
     */
    function approve(address _spender, uint _value) public returns (bool success) {
        allowed[msg.sender][_spender] = _value;

        Approval(msg.sender, _spender, _value);

        return true;
    }

    /**
     * @dev Shows the number of tokens approved by `_owner` that are allowed to be transferred by `_spender`.
     *
     * @param _owner The account which allowed the transfer.
     * @param _spender The account which will spend the tokens.
     *
     * @return The number of tokens to be transferred.
     */
    function allowance(address _owner, address _spender) public constant returns (uint remaining) {
        return allowed[_owner][_spender];
    }
}

// File: contracts\traits\HasOwner.sol

/**
 * @title HasOwner
 *
 * @dev Allows for exclusive access to certain functionality.
 */
contract HasOwner {
    // Current owner.
    address public owner;

    // Conditionally the new owner.
    address public newOwner;

    /**
     * @dev The constructor.
     *
     * @param _owner The address of the owner.
     */
    function HasOwner(address _owner) internal {
        owner = _owner;
    }

    /**
     * @dev Access control modifier that allows only the current owner to call the function.
     */
    modifier onlyOwner {
        require(msg.sender == owner);
        _;
    }

    /**
     * @dev The event is fired when the current owner is changed.
     *
     * @param _oldOwner The address of the previous owner.
     * @param _newOwner The address of the new owner.
     */
    event OwnershipTransfer(address indexed _oldOwner, address indexed _newOwner);

    /**
     * @dev Transfering the ownership is a two-step process, as we prepare
     * for the transfer by setting `newOwner` and requiring `newOwner` to accept
     * the transfer. This prevents accidental lock-out if something goes wrong
     * when passing the `newOwner` address.
     *
     * @param _newOwner The address of the proposed new owner.
     */
    function transferOwnership(address _newOwner) public onlyOwner {
        newOwner = _newOwner;
    }

    /**
     * @dev The `newOwner` finishes the ownership transfer process by accepting the
     * ownership.
     */
    function acceptOwnership() public {
        require(msg.sender == newOwner);

        OwnershipTransfer(owner, newOwner);

        owner = newOwner;
    }
}

// File: contracts\traits\Freezable.sol

/**
 * @title Freezable
 * @dev This trait allows to freeze the transactions in a Token
 */
contract Freezable is HasOwner {
  bool public frozen = false;

  /**
   * @dev Modifier makes methods callable only when the contract is not frozen.
   */
  modifier requireNotFrozen() {
    require(!frozen);
    _;
  }

  /**
   * @dev Allows the owner to "freeze" the contract.
   */
  function freeze() onlyOwner public {
    frozen = true;
  }

  /**
   * @dev Allows the owner to "unfreeze" the contract.
   */
  function unfreeze() onlyOwner public {
    frozen = false;
  }
}

// File: contracts\traits\FreezableERC20Token.sol

/**
 * @title FreezableERC20Token
 *
 * @dev Extends ERC20Token and adds ability to freeze all transfers of tokens.
 */
contract FreezableERC20Token is ERC20Token, Freezable {
    /**
     * @dev Overrides the original ERC20Token implementation by adding whenNotFrozen modifier.
     *
     * @param _to The target address to which the `_value` number of tokens will be sent.
     * @param _value The number of tokens to send.
     *
     * @return Whether the transfer was successful or not.
     */
    function transfer(address _to, uint _value) public requireNotFrozen returns (bool success) {
        return super.transfer(_to, _value);
    }

    /**
     * @dev Send `_value` tokens to `_to` from `_from` if `_from` has approved the process.
     *
     * @param _from The address of the sender.
     * @param _to The address of the recipient.
     * @param _value The number of tokens to be transferred.
     *
     * @return Whether the transfer was successful or not.
     */
    function transferFrom(address _from, address _to, uint _value) public requireNotFrozen returns (bool success) {
        return super.transferFrom(_from, _to, _value);
    }

    /**
     * @dev Allows another contract to spend some tokens on your behalf.
     *
     * @param _spender The address of the account which will be approved for transfer of tokens.
     * @param _value The number of tokens to be approved for transfer.
     *
     * @return Whether the approval was successful or not.
     */
    function approve(address _spender, uint _value) public requireNotFrozen returns (bool success) {
        return super.approve(_spender, _value);
    }

}

// File: contracts\EosPizzaSlice.sol

/**
 * @title EOS Pizza Slice
 *
 * @dev A standard token implementation of the ERC20 token standard with added
 *      HasOwner trait and initialized using the configuration constants.
 */
contract EosPizzaSlice is EosPizzaSliceConfig, HasOwner, FreezableERC20Token {
    // The name of the token.
    string public name;

    // The symbol for the token.
    string public symbol;

    // The decimals of the token.
    uint8 public decimals;

    /**
     * @dev The constructor. Initially sets `totalSupply` and the balance of the
     *      `owner` address according to the initialization parameter.
     */
    function EosPizzaSlice(uint _totalSupply) public
        HasOwner(msg.sender)
    {
        name = NAME;
        symbol = SYMBOL;
        decimals = DECIMALS;
        totalSupply = _totalSupply;
        balances[owner] = _totalSupply;
    }
}

// File: contracts\configs\EosPizzaSliceDonationraiserConfig.sol

/**
 * @title EosPizzaSliceDonationraiserConfig
 *
 * @dev The static configuration for the EOS Pizza Slice donationraiser.
 */
contract EosPizzaSliceDonationraiserConfig is EosPizzaSliceConfig {
    // The number of 🍕 per 1 ETH.
    uint constant CONVERSION_RATE = 100000;

    // The public sale hard cap of the donationraiser.
    uint constant TOKENS_HARD_CAP = 95 * (10**7) * DECIMALS_FACTOR;

    // The start date of the donationraiser: Friday, 9 March 2018 21:22:22 UTC.
    uint constant START_DATE = 1520630542;

    // The end date of the donationraiser:  May 18, 2018, 12:35:20 AM UTC - Bitcoin Pizza 8th year celebration moment.
    uint constant END_DATE =  1526603720;


    // Total number of tokens locked for the 🍕 core team.
    uint constant TOKENS_LOCKED_CORE_TEAM = 35 * (10**6) * DECIMALS_FACTOR;

    // Total number of tokens locked for 🍕 advisors.
    uint constant TOKENS_LOCKED_ADVISORS = 125 * (10**5) * DECIMALS_FACTOR;

    // The release date for tokens locked for the 🍕 core team.
    uint constant TOKENS_LOCKED_CORE_TEAM_RELEASE_DATE = END_DATE + 1 days;

    // The release date for tokens locked for 🍕 advisors.
    uint constant TOKENS_LOCKED_ADVISORS_RELEASE_DATE = END_DATE + 1 days;

    // Total number of tokens locked for bounty program.
    uint constant TOKENS_BOUNTY_PROGRAM = 25 * (10**5) * DECIMALS_FACTOR;

    // Maximum gas price limit
    uint constant MAX_GAS_PRICE = 90000000000 wei; // 90 gwei/shanon

    // Minimum individual contribution
    uint constant MIN_CONTRIBUTION =  0.05 ether;

    // Individual limit in ether
    uint constant INDIVIDUAL_ETHER_LIMIT =  4999 ether;
}

// File: contracts\traits\TokenSafe.sol

/**
 * @title TokenSafe
 *
 * @dev A multi-bundle token safe contract that contains locked tokens released after a date for the specific bundle type.
 */
contract TokenSafe {
    using SafeMath for uint;

    struct AccountsBundle {
        // The total number of tokens locked.
        uint lockedTokens;
        // The release date for the locked tokens
        // Note: Unix timestamp fits uint32, however block.timestamp is uint
        uint releaseDate;
        // The balances for the 🍕 locked token accounts.
        mapping (address => uint) balances;
    }

    // The account bundles of locked tokens grouped by release date
    mapping (uint8 => AccountsBundle) public bundles;

    // The `ERC20TokenInterface` contract.
    ERC20TokenInterface token;

    /**
     * @dev The constructor.
     *
     * @param _token The address of the EOS Pizza Slices (donation) contract.
     */
    function TokenSafe(address _token) public {
        token = ERC20TokenInterface(_token);
    }

    /**
     * @dev The function initializes the bundle of accounts with a release date.
     *
     * @param _type Bundle type.
     * @param _releaseDate Unix timestamp of the time after which the tokens can be released
     */
    function initBundle(uint8 _type, uint _releaseDate) internal {
        bundles[_type].releaseDate = _releaseDate;
    }

    /**
     * @dev Add new account with locked token balance to the specified bundle type.
     *
     * @param _type Bundle type.
     * @param _account The address of the account to be added.
     * @param _balance The number of tokens to be locked.
     */
    function addLockedAccount(uint8 _type, address _account, uint _balance) internal {
        var bundle = bundles[_type];
        bundle.balances[_account] = bundle.balances[_account].plus(_balance);
        bundle.lockedTokens = bundle.lockedTokens.plus(_balance);
    }

    /**
     * @dev Allows an account to be released if it meets the time constraints.
     *
     * @param _type Bundle type.
     * @param _account The address of the account to be released.
     */
    function releaseAccount(uint8 _type, address _account) internal {
        var bundle = bundles[_type];
        require(now >= bundle.releaseDate);
        uint tokens = bundle.balances[_account];
        require(tokens > 0);
        bundle.balances[_account] = 0;
        bundle.lockedTokens = bundle.lockedTokens.minus(tokens);
        if (!token.transfer(_account, tokens)) {
            revert();
        }
    }
}

// File: contracts\EosPizzaSliceSafe.sol

/**
 * @title EosPizzaSliceSafe
 *
 * @dev The EOS Pizza Slice safe containing all details about locked tokens.
 */
contract EosPizzaSliceSafe is TokenSafe, EosPizzaSliceDonationraiserConfig {
    // Bundle type constants
    uint8 constant CORE_TEAM = 0;
    uint8 constant ADVISORS = 1;

    /**
     * @dev The constructor.
     *
     * @param _token The address of the EOS Pizza (donation) contract.
     */
    function EosPizzaSliceSafe(address _token) public
        TokenSafe(_token)
    {
        token = ERC20TokenInterface(_token);

        /// Core team.
        initBundle(CORE_TEAM,
            TOKENS_LOCKED_CORE_TEAM_RELEASE_DATE
        );

        // Accounts with tokens locked for the 🍕 core team.
        addLockedAccount(CORE_TEAM, 0x3ce215b2e4dC9D2ba0e2fC5099315E4Fa05d8AA2, 35 * (10**6) * DECIMALS_FACTOR);


        // Verify that the tokens add up to the constant in the configuration.
        assert(bundles[CORE_TEAM].lockedTokens == TOKENS_LOCKED_CORE_TEAM);

        /// Advisors.
        initBundle(ADVISORS,
            TOKENS_LOCKED_ADVISORS_RELEASE_DATE
        );

        // Accounts with 🍕 tokens locked for advisors.
        addLockedAccount(ADVISORS, 0xC0e321E9305c21b72F5Ee752A9E8D9eCD0f2e2b1, 25 * (10**5) * DECIMALS_FACTOR);
        addLockedAccount(ADVISORS, 0x55798CF234FEa760b0591537517C976FDb0c53Ba, 25 * (10**5) * DECIMALS_FACTOR);
        addLockedAccount(ADVISORS, 0xbc732e73B94A5C4a8f60d0D98C4026dF21D500f5, 25 * (10**5) * DECIMALS_FACTOR);
        addLockedAccount(ADVISORS, 0x088EEEe7C4c26041FBb4e83C10CB0784C81c86f9, 25 * (10**5) * DECIMALS_FACTOR);
        addLockedAccount(ADVISORS, 0x52d640c9c417D9b7E3770d960946Dd5Bd2EB63db, 25 * (10**5) * DECIMALS_FACTOR);


        // Verify that the tokens add up to the constant in the configuration.
        assert(bundles[ADVISORS].lockedTokens == TOKENS_LOCKED_ADVISORS);
    }

    /**
     * @dev Returns the total locked tokens. This function is called by the donationraiser to determine number of tokens to create upon finalization.
     *
     * @return The current total number of locked EOS Pizza Slices.
     */
    function totalTokensLocked() public constant returns (uint) {
        return bundles[CORE_TEAM].lockedTokens.plus(bundles[ADVISORS].lockedTokens);
    }

    /**
     * @dev Allows core team account 🍕 tokens to be released.
     */
    function releaseCoreTeamAccount() public {
        releaseAccount(CORE_TEAM, msg.sender);
    }

    /**
     * @dev Allows advisors account 🍕 tokens to be released.
     */
    function releaseAdvisorsAccount() public {
        releaseAccount(ADVISORS, msg.sender);
    }
}

// File: contracts\traits\Whitelist.sol

contract Whitelist is HasOwner
{
    // Whitelist mapping
    mapping(address => bool) public whitelist;

    /**
     * @dev The constructor.
     */
    function Whitelist(address _owner) public
        HasOwner(_owner)
    {

    }

    /**
     * @dev Access control modifier that allows only whitelisted address to call the method.
     */
    modifier onlyWhitelisted {
        require(whitelist[msg.sender]);
        _;
    }

    /**
     * @dev Internal function that sets whitelist status in batch.
     *
     * @param _entries An array with the entries to be updated
     * @param _status The new status to apply
     */
    function setWhitelistEntries(address[] _entries, bool _status) internal {
        for (uint32 i = 0; i < _entries.length; ++i) {
            whitelist[_entries[i]] = _status;
        }
    }

    /**
     * @dev Public function that allows the owner to whitelist multiple entries
     *
     * @param _entries An array with the entries to be whitelisted
     */
    function whitelistAddresses(address[] _entries) public onlyOwner {
        setWhitelistEntries(_entries, true);
    }

    /**
     * @dev Public function that allows the owner to blacklist multiple entries
     *
     * @param _entries An array with the entries to be blacklist
     */
    function blacklistAddresses(address[] _entries) public onlyOwner {
        setWhitelistEntries(_entries, false);
    }
}

// File: contracts\EosPizzaSliceDonationraiser.sol

/**
 * @title EosPizzaSliceDonationraiser
 *
 * @dev The EOS Pizza Slice donationraiser contract.
 */
contract EosPizzaSliceDonationraiser is EosPizzaSlice, EosPizzaSliceDonationraiserConfig, Whitelist {
    // Indicates whether the donationraiser has ended or not.
    bool public finalized = false;

    // The address of the account which will receive the funds gathered by the donationraiser.
    address public beneficiary;

    // The number of 🍕 participants will receive per 1 ETH.
    uint public conversionRate;

    // Donationraiser start date.
    uint public startDate;

    // Donationraiser end date.
    uint public endDate;

    // Donationraiser tokens hard cap.
    uint public hardCap;

    // The `EosPizzaSliceSafe` contract.
    EosPizzaSliceSafe public eosPizzaSliceSafe;

    // The minimum amount of ether allowed in the public sale
    uint internal minimumContribution;

    // The maximum amount of ether allowed per address
    uint internal individualLimit;

    // Number of tokens sold during the donationraiser.
    uint private tokensSold;



    /**
     * @dev The event fires every time a new buyer enters the donationraiser.
     *
     * @param _address The address of the buyer.
     * @param _ethers The number of ethers sent.
     * @param _tokens The number of tokens received by the buyer.
     * @param _newTotalSupply The updated total number of tokens currently in circulation.
     * @param _conversionRate The conversion rate at which the tokens were bought.
     */
    event FundsReceived(address indexed _address, uint _ethers, uint _tokens, uint _newTotalSupply, uint _conversionRate);

    /**
     * @dev The event fires when the beneficiary of the donationraiser is changed.
     *
     * @param _beneficiary The address of the new beneficiary.
     */
    event BeneficiaryChange(address _beneficiary);

    /**
     * @dev The event fires when the number of 🍕EPS per 1 ETH is changed.
     *
     * @param _conversionRate The new number of 🍕EPS per 1 ETH.
     */
    event ConversionRateChange(uint _conversionRate);

    /**
     * @dev The event fires when the donationraiser is successfully finalized.
     *
     * @param _beneficiary The address of the beneficiary.
     * @param _ethers The number of ethers transfered to the beneficiary.
     * @param _totalSupply The total number of tokens in circulation.
     */
    event Finalized(address _beneficiary, uint _ethers, uint _totalSupply);

    /**
     * @dev The constructor.
     *
     * @param _beneficiary The address which will receive the funds gathered by the donationraiser.
     */
    function EosPizzaSliceDonationraiser(address _beneficiary) public
        EosPizzaSlice(0)
        Whitelist(msg.sender)
    {
        require(_beneficiary != 0);

        beneficiary = _beneficiary;
        conversionRate = CONVERSION_RATE;
        startDate = START_DATE;
        endDate = END_DATE;
        hardCap = TOKENS_HARD_CAP;
        tokensSold = 0;
        minimumContribution = MIN_CONTRIBUTION;
        individualLimit = INDIVIDUAL_ETHER_LIMIT * CONVERSION_RATE;

        eosPizzaSliceSafe = new EosPizzaSliceSafe(this);

        // Freeze the transfers for the duration of the donationraiser. Removed this, you can immediately transfer your 🍕EPS to any ether address you like!
        // freeze();
    }

    /**
     * @dev Changes the beneficiary of the donationraiser.
     *
     * @param _beneficiary The address of the new beneficiary.
     */
    function setBeneficiary(address _beneficiary) public onlyOwner {
        require(_beneficiary != 0);

        beneficiary = _beneficiary;

        BeneficiaryChange(_beneficiary);
    }

    /**
     * @dev Sets converstion rate of 1 ETH to 🍕EPS. Can only be changed before the donationraiser starts.
     *
     * @param _conversionRate The new number of EOS Pizza Slices per 1 ETH.
     */
    function setConversionRate(uint _conversionRate) public onlyOwner {
        require(now < startDate);
        require(_conversionRate > 0);

        conversionRate = _conversionRate;
        individualLimit = INDIVIDUAL_ETHER_LIMIT * _conversionRate;

        ConversionRateChange(_conversionRate);
    }



    /**
     * @dev The default function which will fire every time someone sends ethers to this contract's address.
     */
    function() public payable {
        buyTokens();
    }

    /**
     * @dev Creates new tokens based on the number of ethers sent and the conversion rate.
     */
    //function buyTokens() public payable onlyWhitelisted {
    function buyTokens() public payable {
        require(!finalized);
        require(now >= startDate);
        require(now <= endDate);
        require(tx.gasprice <= MAX_GAS_PRICE);  // gas price limit
        require(msg.value >= minimumContribution);  // required minimum contribution
        require(tokensSold <= hardCap);

        // Calculate the number of tokens the buyer will receive.
        uint tokens = msg.value.mul(conversionRate);
        balances[msg.sender] = balances[msg.sender].plus(tokens);

        // Ensure that the individual contribution limit has not been reached
        require(balances[msg.sender] <= individualLimit);



        tokensSold = tokensSold.plus(tokens);
        totalSupply = totalSupply.plus(tokens);

        Transfer(0x0, msg.sender, tokens);

        FundsReceived(
            msg.sender,
            msg.value,
            tokens,
            totalSupply,
            conversionRate
        );
    }



    /**
     * @dev Finalize the donationraiser if `endDate` has passed or if `hardCap` is reached.
     */
    function finalize() public onlyOwner {
        require((totalSupply >= hardCap) || (now >= endDate));
        require(!finalized);

        address contractAddress = this;
        Finalized(beneficiary, contractAddress.balance, totalSupply);

        /// Send the total number of ETH gathered to the beneficiary.
        beneficiary.transfer(contractAddress.balance);

        /// Allocate locked tokens to the `EosPizzaSliceSafe` contract.
        uint totalTokensLocked = eosPizzaSliceSafe.totalTokensLocked();
        balances[address(eosPizzaSliceSafe)] = balances[address(eosPizzaSliceSafe)].plus(totalTokensLocked);
        totalSupply = totalSupply.plus(totalTokensLocked);

        // Transfer the funds for the bounty program.
        balances[owner] = balances[owner].plus(TOKENS_BOUNTY_PROGRAM);
        totalSupply = totalSupply.plus(TOKENS_BOUNTY_PROGRAM);

        /// Finalize the donationraiser. Keep in mind that this cannot be undone.
        finalized = true;

        // Unfreeze transfers
        unfreeze();
    }

    /**
     * @dev allow owner to collect balance of contract during donation period
     */

    function collect() public onlyOwner {

        address contractAddress = this;
        /// Send the total number of ETH gathered to the beneficiary.
        beneficiary.transfer(contractAddress.balance);

    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"frozen","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"startDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_beneficiary","type":"address"}],"name":"setBeneficiary","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_entries","type":"address[]"}],"name":"whitelistAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"beneficiary","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"finalize","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"eosPizzaSliceSafe","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"freeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unfreeze","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_account","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_entries","type":"address[]"}],"name":"blacklistAddresses","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"conversionRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"whitelist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"finalized","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"endDate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"buyTokens","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_conversionRate","type":"uint256"}],"name":"setConversionRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"collect","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"hardCap","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_beneficiary","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_ethers","type":"uint256"},{"indexed":false,"name":"_tokens","type":"uint256"},{"indexed":false,"name":"_newTotalSupply","type":"uint256"},{"indexed":false,"name":"_conversionRate","type":"uint256"}],"name":"FundsReceived","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"}],"name":"BeneficiaryChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_conversionRate","type":"uint256"}],"name":"ConversionRateChange","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_beneficiary","type":"address"},{"indexed":false,"name":"_ethers","type":"uint256"},{"indexed":false,"name":"_totalSupply","type":"uint256"}],"name":"Finalized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_oldOwner","type":"address"},{"indexed":true,"name":"_newOwner","type":"address"}],"name":"OwnershipTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

60606040526004805460a060020a60ff02191690556009805460ff1916905534156200002a57600080fd5b60405160208062001b698339810160405280805160038054600160a060020a03191633600160a060020a038116919091179091559092509050600060408051908101604052600981527f454f532e50697a7a61000000000000000000000000000000000000000000000060208201526005908051620000ae929160200190620001f9565b5060408051908101604052600381527f455053000000000000000000000000000000000000000000000000000000000060208201526006908051620000f8929160200190620001f9565b506007805460ff191660121790556000818155600354600160a060020a03908116825260016020526040909120919091558216151590506200013957600080fd5b6009805461010060a860020a031916610100600160a060020a03841602179055620186a0600a55635aa2fb0e600b55635afe1fc8600c556b0311d253316c79d376000000600d55600060115566b1a2bc2ec50000600f556b019d81f14d205ed37d80000060105530620001ab6200027e565b600160a060020a039091168152602001604051809103906000f0801515620001d257600080fd5b600e8054600160a060020a031916600160a060020a039290921691909117905550620002af565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200023c57805160ff19168380011785556200026c565b828001600101855582156200026c579182015b828111156200026c5782518255916020019190600101906200024f565b506200027a9291506200028f565b5090565b60405161067f80620014ea83390190565b620002ac91905b808211156200027a576000815560010162000296565b90565b61122b80620002bf6000396000f30060606040526004361061018a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663054f7d9c811461019457806306fdde03146101bb578063095ea7b3146102455780630b97bc861461026757806318160ddd1461028c5780631c31f7101461029f57806323b872dd146102be5780632bf04304146102e6578063313ce5671461033557806338af3eed1461035e5780634bb278f31461038d5780635ae5b24f146103a057806362a5af3b146103b35780636a28f000146103c657806370a08231146103d957806377a54eb8146103f857806379ba5097146104475780637ffdf53e1461045a5780638da5cb5b1461046d57806395d89b41146104805780639b19251a14610493578063a9059cbb146104b2578063b3f05b97146104d4578063c24a0f8b146104e7578063d0febe4c1461018a578063d2e80494146104fa578063d4ee1d9014610510578063dd62ed3e14610523578063e522538114610548578063f2fde38b1461055b578063fb86a4041461057a575b61019261058d565b005b341561019f57600080fd5b6101a7610726565b604051901515815260200160405180910390f35b34156101c657600080fd5b6101ce610736565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020a5780820151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025057600080fd5b6101a7600160a060020a03600435166024356107d4565b341561027257600080fd5b61027a610801565b60405190815260200160405180910390f35b341561029757600080fd5b61027a610807565b34156102aa57600080fd5b610192600160a060020a036004351661080d565b34156102c957600080fd5b6101a7600160a060020a03600435811690602435166044356108aa565b34156102f157600080fd5b61019260046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506108d995505050505050565b341561034057600080fd5b610348610902565b60405160ff909116815260200160405180910390f35b341561036957600080fd5b61037161090b565b604051600160a060020a03909116815260200160405180910390f35b341561039857600080fd5b61019261091f565b34156103ab57600080fd5b610371610b90565b34156103be57600080fd5b610192610b9f565b34156103d157600080fd5b610192610be0565b34156103e457600080fd5b61027a600160a060020a0360043516610c1b565b341561040357600080fd5b6101926004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610c3695505050505050565b341561045257600080fd5b610192610c5c565b341561046557600080fd5b61027a610ce7565b341561047857600080fd5b610371610ced565b341561048b57600080fd5b6101ce610cfc565b341561049e57600080fd5b6101a7600160a060020a0360043516610d67565b34156104bd57600080fd5b6101a7600160a060020a0360043516602435610d7c565b34156104df57600080fd5b6101a7610da0565b34156104f257600080fd5b61027a610da9565b341561050557600080fd5b610192600435610daf565b341561051b57600080fd5b610371610e30565b341561052e57600080fd5b61027a600160a060020a0360043581169060243516610e3f565b341561055357600080fd5b610192610e6a565b341561056657600080fd5b610192600160a060020a0360043516610ec9565b341561058557600080fd5b61027a610f13565b60095460009060ff16156105a057600080fd5b600b544210156105af57600080fd5b600c544211156105be57600080fd5b6414f46b04003a11156105d057600080fd5b600f543410156105df57600080fd5b600d5460115411156105f057600080fd5b600a5461060490349063ffffffff610f1916565b600160a060020a033316600090815260016020526040902054909150610630908263ffffffff610f3d16565b600160a060020a033316600090815260016020526040902081905560105490111561065a57600080fd5b60115461066d908263ffffffff610f3d16565b601155600054610683908263ffffffff610f3d16565b6000908155600160a060020a033316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a333600160a060020a03167f17e507914c1ab4cd822dacbda95ac688e622145eaaf4547021782e4a347837453483600054600a546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60045460a060020a900460ff1681565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b505050505081565b60045460009060a060020a900460ff16156107ee57600080fd5b6107f88383610f4c565b90505b92915050565b600b5481565b60005481565b60035433600160a060020a0390811691161461082857600080fd5b600160a060020a038116151561083d57600080fd5b6009805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a038416021790557fde18bec64db6456a4810135a56f83d06f0ab5786ebdb21e3bef0893f63dab7fd81604051600160a060020a03909116815260200160405180910390a150565b60045460009060a060020a900460ff16156108c457600080fd5b6108cf848484610fb8565b90505b9392505050565b60035433600160a060020a039081169116146108f457600080fd5b6108ff8160016110cc565b50565b60075460ff1681565b6009546101009004600160a060020a031681565b600354600090819033600160a060020a0390811691161461093f57600080fd5b600d546000541015806109545750600c544210155b151561095f57600080fd5b60095460ff161561096f57600080fd5b3091507f616c9469db50815ae0f1d0a020d9fc9060da7c57f03559afb0d4ebdaa0a3a05e600960019054906101000a9004600160a060020a031683600160a060020a0316316000546040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1600954600160a060020a0361010090910481169083163180156108fc0290604051600060405180830381858888f193505050501515610a2a57600080fd5b600e54600160a060020a031663dc5bf9616000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610a8b57600080fd5b6102c65a03f11515610a9c57600080fd5b5050506040518051600e54600160a060020a0316600090815260016020526040902054909250610ad391508263ffffffff610f3d16565b600e54600160a060020a031660009081526001602052604081209190915554610b02908263ffffffff610f3d16565b6000908155600354600160a060020a0316815260016020526040902054610b3a906a021165458500521280000063ffffffff610f3d16565b600354600160a060020a031660009081526001602052604081209190915554610b74906a021165458500521280000063ffffffff610f3d16565b6000556009805460ff19166001179055610b8c610be0565b5050565b600e54600160a060020a031681565b60035433600160a060020a03908116911614610bba57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055565b60035433600160a060020a03908116911614610bfb57600080fd5b6004805474ff000000000000000000000000000000000000000019169055565b600160a060020a031660009081526001602052604090205490565b60035433600160a060020a03908116911614610c5157600080fd5b6108ff8160006110cc565b60045433600160a060020a03908116911614610c7757600080fd5b600454600354600160a060020a0391821691167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a36004546003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600a5481565b600354600160a060020a031681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107cc5780601f106107a1576101008083540402835291602001916107cc565b60086020526000908152604090205460ff1681565b60045460009060a060020a900460ff1615610d9657600080fd5b6107f88383611134565b60095460ff1681565b600c5481565b60035433600160a060020a03908116911614610dca57600080fd5b600b544210610dd857600080fd5b60008111610de557600080fd5b600a81905569010eff0fae29b1bc000081026010557fed4f114d5309d23a6f29a047b8e4014ccd43ac8c42087d845ef4d0f1fbf2d8848160405190815260200160405180910390a150565b600454600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035460009033600160a060020a03908116911614610e8857600080fd5b506009543090600160a060020a0361010090910481169082163180156108fc0290604051600060405180830381858888f1935050505015156108ff57600080fd5b60035433600160a060020a03908116911614610ee457600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5481565b6000828202831580610f355750828482811515610f3257fe5b04145b15156108d257fe5b6000828201838110156108d257fe5b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600160a060020a038316600090815260016020526040812054829010806110055750600160a060020a03808516600090815260026020908152604080832033909416835292905220548290105b8061100e575081155b1561101b575060006108d2565b600160a060020a038316600090815260016020526040902054611044908363ffffffff610f3d16565b600160a060020a03808516600081815260016020908152604080832095909555888416808352858320805489900390556002825285832033909516835293905283902080548690039055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60005b82518163ffffffff16101561112f578160086000858463ffffffff16815181106110f557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556001016110cf565b505050565b600160a060020a03331660009081526001602052604081205482901080611159575081155b15611166575060006107fb565b600160a060020a03338116600090815260016020526040808220805486900390559185168152205461119e908363ffffffff610f3d16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001929150505600a165627a7a72305820393bd741cf2d4092be21b94579d8ff668c9bc83dc881ea832212fe59a617b42b00296060604052341561000f57600080fd5b60405160208061067f8339810160405280805160018054600160a060020a038316600160a060020a03199182168117909116179055915061006490506000635aff71486401000000006102c061025282021704565b61009c6000733ce215b2e4dc9d2ba0e2fc5099315e4fa05d8aa26a1cf389cd46047d030000006401000000006102d961026b82021704565b60008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5546a1cf389cd46047d03000000146100d957fe5b6100f56001635aff71486401000000006102c061025282021704565b61012d600173c0e321e9305c21b72f5ee752a9e8d9ecd0f2e2b16a02116545850052128000006401000000006102d961026b82021704565b61016560017355798cf234fea760b0591537517c976fdb0c53ba6a02116545850052128000006401000000006102d961026b82021704565b61019d600173bc732e73b94a5c4a8f60d0d98c4026df21d500f56a02116545850052128000006401000000006102d961026b82021704565b6101d5600173088eeee7c4c26041fbb4e83c10cb0784c81c86f96a02116545850052128000006401000000006102d961026b82021704565b61020d60017352d640c9c417d9b7e3770d960946dd5bd2eb63db6a02116545850052128000006401000000006102d961026b82021704565b600160009081526020527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d546a0a56fa5b99019a5c8000001461024c57fe5b506102fd565b60ff909116600090815260208190526040902060010155565b60ff8316600090815260208181526040808320600160a060020a038616845260028101909252909120546102ac90836401000000006102986102e782021704565b600160a060020a038416600090815260028301602052604090205580546102e090836401000000006102986102e782021704565b9055505050565b6000828201838110156102f657fe5b9392505050565b6103738061030c6000396000f3006060604052600436106100615763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166317e95fbc811461006657806347b3aff81461007b578063c1873e26146100ac578063dc5bf961146100bf575b600080fd5b341561007157600080fd5b6100796100e4565b005b341561008657600080fd5b61009460ff600435166100f1565b60405191825260208201526040908101905180910390f35b34156100b757600080fd5b61007961010a565b34156100ca57600080fd5b6100d2610115565b60405190815260200160405180910390f35b6100ef600133610177565b565b6000602081905290815260409020805460019091015482565b6100ef600033610177565b600060208190527fada5013122d395ba3c54772283fb069b10426056ef8ca54750cb9bb552a59e7d548180527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5546101729163ffffffff61029816565b905090565b60ff82166000908152602081905260408120600181015490919042101561019d57600080fd5b50600160a060020a03821660009081526002820160205260408120549081116101c557600080fd5b600160a060020a038316600090815260028301602052604081205581546101f2908263ffffffff6102ae16565b8255600154600160a060020a031663a9059cbb84836000604051602001526040517c010000000000000000000000000000000000000000000000000000000063ffffffff8516028152600160a060020a0390921660048301526024820152604401602060405180830381600087803b151561026c57600080fd5b6102c65a03f1151561027d57600080fd5b50505060405180519050151561029257600080fd5b50505050565b6000828201838110156102a757fe5b9392505050565b6000828211156102ba57fe5b50900390565b60ff909116600090815260208190526040902060010155565b60ff8316600090815260208181526040808320600160a060020a03861684526002810190925290912054610313908363ffffffff61029816565b600160a060020a03841660009081526002830160205260409020558054610340908363ffffffff61029816565b90555050505600a165627a7a723058201ec5fbf198085e3ef4939f7f51d67702b24d537d1ae1b5f79321b572535d197a0029000000000000000000000000021dba5e12eb593c55bd3894a91634ac3895581b

Deployed Bytecode

0x60606040526004361061018a5763ffffffff7c0100000000000000000000000000000000000000000000000000000000600035041663054f7d9c811461019457806306fdde03146101bb578063095ea7b3146102455780630b97bc861461026757806318160ddd1461028c5780631c31f7101461029f57806323b872dd146102be5780632bf04304146102e6578063313ce5671461033557806338af3eed1461035e5780634bb278f31461038d5780635ae5b24f146103a057806362a5af3b146103b35780636a28f000146103c657806370a08231146103d957806377a54eb8146103f857806379ba5097146104475780637ffdf53e1461045a5780638da5cb5b1461046d57806395d89b41146104805780639b19251a14610493578063a9059cbb146104b2578063b3f05b97146104d4578063c24a0f8b146104e7578063d0febe4c1461018a578063d2e80494146104fa578063d4ee1d9014610510578063dd62ed3e14610523578063e522538114610548578063f2fde38b1461055b578063fb86a4041461057a575b61019261058d565b005b341561019f57600080fd5b6101a7610726565b604051901515815260200160405180910390f35b34156101c657600080fd5b6101ce610736565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561020a5780820151838201526020016101f2565b50505050905090810190601f1680156102375780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561025057600080fd5b6101a7600160a060020a03600435166024356107d4565b341561027257600080fd5b61027a610801565b60405190815260200160405180910390f35b341561029757600080fd5b61027a610807565b34156102aa57600080fd5b610192600160a060020a036004351661080d565b34156102c957600080fd5b6101a7600160a060020a03600435811690602435166044356108aa565b34156102f157600080fd5b61019260046024813581810190830135806020818102016040519081016040528093929190818152602001838360200280828437509496506108d995505050505050565b341561034057600080fd5b610348610902565b60405160ff909116815260200160405180910390f35b341561036957600080fd5b61037161090b565b604051600160a060020a03909116815260200160405180910390f35b341561039857600080fd5b61019261091f565b34156103ab57600080fd5b610371610b90565b34156103be57600080fd5b610192610b9f565b34156103d157600080fd5b610192610be0565b34156103e457600080fd5b61027a600160a060020a0360043516610c1b565b341561040357600080fd5b6101926004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843750949650610c3695505050505050565b341561045257600080fd5b610192610c5c565b341561046557600080fd5b61027a610ce7565b341561047857600080fd5b610371610ced565b341561048b57600080fd5b6101ce610cfc565b341561049e57600080fd5b6101a7600160a060020a0360043516610d67565b34156104bd57600080fd5b6101a7600160a060020a0360043516602435610d7c565b34156104df57600080fd5b6101a7610da0565b34156104f257600080fd5b61027a610da9565b341561050557600080fd5b610192600435610daf565b341561051b57600080fd5b610371610e30565b341561052e57600080fd5b61027a600160a060020a0360043581169060243516610e3f565b341561055357600080fd5b610192610e6a565b341561056657600080fd5b610192600160a060020a0360043516610ec9565b341561058557600080fd5b61027a610f13565b60095460009060ff16156105a057600080fd5b600b544210156105af57600080fd5b600c544211156105be57600080fd5b6414f46b04003a11156105d057600080fd5b600f543410156105df57600080fd5b600d5460115411156105f057600080fd5b600a5461060490349063ffffffff610f1916565b600160a060020a033316600090815260016020526040902054909150610630908263ffffffff610f3d16565b600160a060020a033316600090815260016020526040902081905560105490111561065a57600080fd5b60115461066d908263ffffffff610f3d16565b601155600054610683908263ffffffff610f3d16565b6000908155600160a060020a033316907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405190815260200160405180910390a333600160a060020a03167f17e507914c1ab4cd822dacbda95ac688e622145eaaf4547021782e4a347837453483600054600a546040518085815260200184815260200183815260200182815260200194505050505060405180910390a250565b60045460a060020a900460ff1681565b60058054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107cc5780601f106107a1576101008083540402835291602001916107cc565b820191906000526020600020905b8154815290600101906020018083116107af57829003601f168201915b505050505081565b60045460009060a060020a900460ff16156107ee57600080fd5b6107f88383610f4c565b90505b92915050565b600b5481565b60005481565b60035433600160a060020a0390811691161461082857600080fd5b600160a060020a038116151561083d57600080fd5b6009805474ffffffffffffffffffffffffffffffffffffffff001916610100600160a060020a038416021790557fde18bec64db6456a4810135a56f83d06f0ab5786ebdb21e3bef0893f63dab7fd81604051600160a060020a03909116815260200160405180910390a150565b60045460009060a060020a900460ff16156108c457600080fd5b6108cf848484610fb8565b90505b9392505050565b60035433600160a060020a039081169116146108f457600080fd5b6108ff8160016110cc565b50565b60075460ff1681565b6009546101009004600160a060020a031681565b600354600090819033600160a060020a0390811691161461093f57600080fd5b600d546000541015806109545750600c544210155b151561095f57600080fd5b60095460ff161561096f57600080fd5b3091507f616c9469db50815ae0f1d0a020d9fc9060da7c57f03559afb0d4ebdaa0a3a05e600960019054906101000a9004600160a060020a031683600160a060020a0316316000546040518084600160a060020a0316600160a060020a03168152602001838152602001828152602001935050505060405180910390a1600954600160a060020a0361010090910481169083163180156108fc0290604051600060405180830381858888f193505050501515610a2a57600080fd5b600e54600160a060020a031663dc5bf9616000604051602001526040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1515610a8b57600080fd5b6102c65a03f11515610a9c57600080fd5b5050506040518051600e54600160a060020a0316600090815260016020526040902054909250610ad391508263ffffffff610f3d16565b600e54600160a060020a031660009081526001602052604081209190915554610b02908263ffffffff610f3d16565b6000908155600354600160a060020a0316815260016020526040902054610b3a906a021165458500521280000063ffffffff610f3d16565b600354600160a060020a031660009081526001602052604081209190915554610b74906a021165458500521280000063ffffffff610f3d16565b6000556009805460ff19166001179055610b8c610be0565b5050565b600e54600160a060020a031681565b60035433600160a060020a03908116911614610bba57600080fd5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055565b60035433600160a060020a03908116911614610bfb57600080fd5b6004805474ff000000000000000000000000000000000000000019169055565b600160a060020a031660009081526001602052604090205490565b60035433600160a060020a03908116911614610c5157600080fd5b6108ff8160006110cc565b60045433600160a060020a03908116911614610c7757600080fd5b600454600354600160a060020a0391821691167f22500af037c600dd7b720644ab6e358635085601d9ac508ad83eb2d6b2d729ca60405160405180910390a36004546003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a03909216919091179055565b600a5481565b600354600160a060020a031681565b60068054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156107cc5780601f106107a1576101008083540402835291602001916107cc565b60086020526000908152604090205460ff1681565b60045460009060a060020a900460ff1615610d9657600080fd5b6107f88383611134565b60095460ff1681565b600c5481565b60035433600160a060020a03908116911614610dca57600080fd5b600b544210610dd857600080fd5b60008111610de557600080fd5b600a81905569010eff0fae29b1bc000081026010557fed4f114d5309d23a6f29a047b8e4014ccd43ac8c42087d845ef4d0f1fbf2d8848160405190815260200160405180910390a150565b600454600160a060020a031681565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b60035460009033600160a060020a03908116911614610e8857600080fd5b506009543090600160a060020a0361010090910481169082163180156108fc0290604051600060405180830381858888f1935050505015156108ff57600080fd5b60035433600160a060020a03908116911614610ee457600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600d5481565b6000828202831580610f355750828482811515610f3257fe5b04145b15156108d257fe5b6000828201838110156108d257fe5b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b600160a060020a038316600090815260016020526040812054829010806110055750600160a060020a03808516600090815260026020908152604080832033909416835292905220548290105b8061100e575081155b1561101b575060006108d2565b600160a060020a038316600090815260016020526040902054611044908363ffffffff610f3d16565b600160a060020a03808516600081815260016020908152604080832095909555888416808352858320805489900390556002825285832033909516835293905283902080548690039055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a35060019392505050565b60005b82518163ffffffff16101561112f578160086000858463ffffffff16815181106110f557fe5b90602001906020020151600160a060020a031681526020810191909152604001600020805460ff19169115159190911790556001016110cf565b505050565b600160a060020a03331660009081526001602052604081205482901080611159575081155b15611166575060006107fb565b600160a060020a03338116600090815260016020526040808220805486900390559185168152205461119e908363ffffffff610f3d16565b600160a060020a0380851660008181526001602052604090819020939093559133909116907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a3506001929150505600a165627a7a72305820393bd741cf2d4092be21b94579d8ff668c9bc83dc881ea832212fe59a617b42b0029

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

000000000000000000000000021dba5e12eb593c55bd3894a91634ac3895581b

-----Decoded View---------------
Arg [0] : _beneficiary (address): 0x021dba5E12eB593c55bD3894A91634ac3895581B

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000021dba5e12eb593c55bd3894a91634ac3895581b


Swarm Source

bzzr://1ec5fbf198085e3ef4939f7f51d67702b24d537d1ae1b5f79321b572535d197a
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.