ETH Price: $3,076.52 (+0.16%)
Gas: 6 Gwei

Contract

0xBEB9eF514a379B997e0798FDcC901Ee474B6D9A1
 
Transaction Hash
Method
Block
From
To
Value
Transfer195957252024-04-06 9:14:5913 days ago1712394899IN
Melon: Old Token
0 ETH0.0006738413.6125777
Transfer194125602024-03-11 14:49:5939 days ago1710168599IN
Melon: Old Token
0 ETH0.0044564590.02584725
Transfer192574622024-02-18 21:52:1161 days ago1708293131IN
Melon: Old Token
0 ETH0.0010890422
Approve188938652023-12-29 21:20:59112 days ago1703884859IN
Melon: Old Token
0 ETH0.0008872119.20670172
Transfer188937802023-12-29 21:03:59112 days ago1703883839IN
Melon: Old Token
0 ETH0.0009639319.46799057
Approve188683482023-12-26 7:21:59115 days ago1703575319IN
Melon: Old Token
0 ETH0.0005541712
Transfer186920552023-12-01 14:07:47140 days ago1701439667IN
Melon: Old Token
0 ETH0.0019716939.83064291
Approve185905562023-11-17 8:58:23154 days ago1700211503IN
Melon: Old Token
0 ETH0.0013392429
Transfer175704902023-06-27 11:46:35297 days ago1687866395IN
Melon: Old Token
0 ETH0.0005797917.89376328
Approve173327092023-05-25 0:50:11330 days ago1684975811IN
Melon: Old Token
0 ETH0.0012046626.08573164
Transfer173116112023-05-22 1:34:47333 days ago1684719287IN
Melon: Old Token
0 ETH0.0013470427.22511094
Approve172954732023-05-19 19:01:47336 days ago1684522907IN
Melon: Old Token
0 ETH0.0021838447.30120478
Transfer167907722023-03-09 12:52:47407 days ago1678366367IN
Melon: Old Token
0 ETH0.0013548727.36354632
Approve166739212023-02-21 2:29:23423 days ago1676946563IN
Melon: Old Token
0 ETH0.001287727.88384937
Transfer161426282022-12-08 21:18:35498 days ago1670534315IN
Melon: Old Token
0 ETH0.0006669613.47357293
Approve160391342022-11-24 10:06:35512 days ago1669284395IN
Melon: Old Token
0 ETH0.0006693714.49457165
Transfer160029432022-11-19 8:43:35517 days ago1668847415IN
Melon: Old Token
0 ETH0.000671413.56
Transfer158036192022-10-22 12:22:11545 days ago1666441331IN
Melon: Old Token
0 ETH0.0009900420
Approve155525882022-09-17 10:04:11580 days ago1663409051IN
Melon: Old Token
0 ETH0.000346177.49615043
Approve154997902022-09-09 0:47:36588 days ago1662684456IN
Melon: Old Token
0 ETH0.0003231813.35648663
Approve154723362022-09-04 15:11:36593 days ago1662304296IN
Melon: Old Token
0 ETH0.0028155761
Approve153872772022-08-22 0:53:26606 days ago1661129606IN
Melon: Old Token
0 ETH0.000277016
Approve153246712022-08-12 3:25:26616 days ago1660274726IN
Melon: Old Token
0 ETH0.0006925315
Transfer150697182022-07-03 12:54:31656 days ago1656852871IN
Melon: Old Token
0 ETH0.0006393312.91851309
Approve149752072022-06-16 20:05:10673 days ago1655409910IN
Melon: Old Token
0 ETH0.0016629436
View all transactions

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Block From To Value
31730692017-02-13 1:52:232622 days ago1486950743  Contract Creation0 ETH
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
MelonToken

Compiler Version
v0.4.8+commit.60cc1668

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2017-02-13
*/

pragma solidity ^0.4.8;

/// @title Assertive contract
/// @author Melonport AG <[email protected]>
/// @notice Asserts function
contract Assertive {

  function assert(bool assertion) internal {
      if (!assertion) throw;
  }

}

/// @title Overflow aware uint math functions.
/// @author Melonport AG <[email protected]>
/// @notice Inspired by https://github.com/MakerDAO/maker-otc/blob/master/contracts/simple_market.sol
contract SafeMath is Assertive{

    function safeMul(uint a, uint b) internal returns (uint) {
        uint c = a * b;
        assert(a == 0 || c / a == b);
        return c;
    }

    function safeSub(uint a, uint b) internal returns (uint) {
        assert(b <= a);
        return a - b;
    }

    function safeAdd(uint a, uint b) internal returns (uint) {
        uint c = a + b;
        assert(c>=a && c>=b);
        return c;
    }

}

/// @title ERC20 Token Protocol
/// @author Melonport AG <[email protected]>
/// @notice See https://github.com/ethereum/EIPs/issues/20
contract ERC20Protocol {

    function totalSupply() constant returns (uint256 totalSupply) {}
    function balanceOf(address _owner) constant returns (uint256 balance) {}
    function transfer(address _to, uint256 _value) returns (bool success) {}
    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {}
    function approve(address _spender, uint256 _value) returns (bool success) {}
    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {}

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);

}

/// @title ERC20 Token
/// @author Melonport AG <[email protected]>
/// @notice Original taken from https://github.com/ethereum/EIPs/issues/20
/// @notice Checked against integer overflow
contract ERC20 is ERC20Protocol {

    function transfer(address _to, uint256 _value) returns (bool success) {
        if (balances[msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[msg.sender] -= _value;
            balances[_to] += _value;
            Transfer(msg.sender, _to, _value);
            return true;
        } else { return false; }
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (balances[_from] >= _value && allowed[_from][msg.sender] >= _value && balances[_to] + _value > balances[_to]) {
            balances[_to] += _value;
            balances[_from] -= _value;
            allowed[_from][msg.sender] -= _value;
            Transfer(_from, _to, _value);
            return true;
        } else { return false; }
    }

    function balanceOf(address _owner) constant returns (uint256 balance) {
        return balances[_owner];
    }

    function approve(address _spender, uint256 _value) returns (bool success) {
        allowed[msg.sender][_spender] = _value;
        Approval(msg.sender, _spender, _value);
        return true;
    }

    function allowance(address _owner, address _spender) constant returns (uint256 remaining) {
        return allowed[_owner][_spender];
    }

    mapping (address => uint256) balances;

    mapping (address => mapping (address => uint256)) allowed;

    uint256 public totalSupply;

}


/// @title Melon Token Contract
/// @author Melonport AG <[email protected]>
contract MelonToken is ERC20, SafeMath {

    // FIELDS

    // Constant token specific fields
    string public constant name = "Melon Token";
    string public constant symbol = "MLN";
    uint public constant decimals = 18;
    uint public constant THAWING_DURATION = 2 years; // Time needed for iced tokens to thaw into liquid tokens
    uint public constant MAX_TOTAL_TOKEN_AMOUNT_OFFERED_TO_PUBLIC = 1000000 * 10 ** decimals; // Max amount of tokens offered to the public
    uint public constant MAX_TOTAL_TOKEN_AMOUNT = 1250000 * 10 ** decimals; // Max amount of total tokens raised during all contributions (includes stakes of patrons)

    // Fields that are only changed in constructor
    address public minter; // Contribution contract(s)
    address public melonport; // Can change to other minting contribution contracts but only until total amount of token minted
    uint public startTime; // Contribution start time in seconds
    uint public endTime; // Contribution end time in seconds

    // Fields that can be changed by functions
    mapping (address => uint) lockedBalances;

    // MODIFIERS

    modifier only_minter {
        assert(msg.sender == minter);
        _;
    }

    modifier only_melonport {
        assert(msg.sender == melonport);
        _;
    }

    modifier is_later_than(uint x) {
        assert(now > x);
        _;
    }

    modifier max_total_token_amount_not_reached(uint amount) {
        assert(safeAdd(totalSupply, amount) <= MAX_TOTAL_TOKEN_AMOUNT);
        _;
    }

    // CONSTANT METHODS

    function lockedBalanceOf(address _owner) constant returns (uint balance) {
        return lockedBalances[_owner];
    }

    // METHODS

    /// Pre: All fields, except { minter, melonport, startTime, endTime } are valid
    /// Post: All fields, including { minter, melonport, startTime, endTime } are valid
    function MelonToken(address setMinter, address setMelonport, uint setStartTime, uint setEndTime) {
        minter = setMinter;
        melonport = setMelonport;
        startTime = setStartTime;
        endTime = setEndTime;
    }

    /// Pre: Address of contribution contract (minter) is set
    /// Post: Mints token into tradeable tranche
    function mintLiquidToken(address recipient, uint amount)
        external
        only_minter
        max_total_token_amount_not_reached(amount)
    {
        balances[recipient] = safeAdd(balances[recipient], amount);
        totalSupply = safeAdd(totalSupply, amount);
    }

    /// Pre: Address of contribution contract (minter) is set
    /// Post: Mints Token into iced tranche. Become liquid after completion of the melonproject or two years.
    function mintIcedToken(address recipient, uint amount)
        external
        only_minter
        max_total_token_amount_not_reached(amount)
    {
        lockedBalances[recipient] = safeAdd(lockedBalances[recipient], amount);
        totalSupply = safeAdd(totalSupply, amount);
    }

    /// Pre: Thawing period has passed - iced funds have turned into liquid ones
    /// Post: All funds available for trade
    function unlockBalance(address recipient)
        is_later_than(endTime + THAWING_DURATION)
    {
        balances[recipient] = safeAdd(balances[recipient], lockedBalances[recipient]);
        lockedBalances[recipient] = 0;
    }

    /// Pre: Prevent transfers until contribution period is over.
    /// Post: Transfer MLN from msg.sender
    /// Note: ERC20 interface
    function transfer(address recipient, uint amount)
        is_later_than(endTime)
        returns (bool success)
    {
        return super.transfer(recipient, amount);
    }

    /// Pre: Prevent transfers until contribution period is over.
    /// Post: Transfer MLN from arbitrary address
    /// Note: ERC20 interface
    function transferFrom(address sender, address recipient, uint amount)
        is_later_than(endTime)
        returns (bool success)
    {
        return super.transferFrom(sender, recipient, amount);
    }

    /// Pre: Melonport address is set. Restricted to melonport.
    /// Post: New minter can now create tokens up to MAX_TOTAL_TOKEN_AMOUNT.
    /// Note: This allows additional contribution periods at a later stage, while still using the same ERC20 compliant contract.
    function changeMintingAddress(address newAddress) only_melonport { minter = newAddress; }

    /// Pre: Melonport address is set. Restricted to melonport.
    /// Post: New address set. This address controls the setting of the minter address
    function changeMelonportAddress(address newAddress) only_melonport { melonport = newAddress; }
}


/// @title Contribution Contract
/// @author Melonport AG <[email protected]>
/// @notice This follows Condition-Orientated Programming as outlined here:
/// @notice   https://medium.com/@gavofyork/condition-orientated-programming-969f6ba0161a#.saav3bvva
contract Contribution is SafeMath {

    // FIELDS

    // Constant fields
    uint public constant ETHER_CAP = 227000 ether; // Max amount raised during first contribution; targeted amount CHF 2.5MN
    uint public constant MAX_CONTRIBUTION_DURATION = 4 weeks; // Max amount in seconds of contribution period
    uint public constant BTCS_ETHER_CAP = ETHER_CAP * 25 / 100; // Max melon token allocation for btcs before contribution period starts
    // Price Rates
    uint public constant PRICE_RATE_FIRST = 2200; // Four price tiers, each valid for two weeks
    uint public constant PRICE_RATE_SECOND = 2150;
    uint public constant PRICE_RATE_THIRD = 2100;
    uint public constant PRICE_RATE_FOURTH = 2050;
    uint public constant DIVISOR_PRICE = 1000; // Price rates are divided by this number
    // Addresses of Patrons
    address public constant FOUNDER_ONE = 0x009beAE06B0c0C536ad1eA43D6f61DCCf0748B1f;
    address public constant FOUNDER_TWO = 0xB1EFca62C555b49E67363B48aE5b8Af3C7E3e656;
    address public constant EXT_COMPANY_ONE = 0x00779e0e4c6083cfd26dE77B4dbc107A7EbB99d2;
    address public constant EXT_COMPANY_TWO = 0x1F06B976136e94704D328D4d23aae7259AaC12a2;
    address public constant EXT_COMPANY_THREE = 0xDD91615Ea8De94bC48231c4ae9488891F1648dc5;
    address public constant ADVISOR_ONE = 0x0001126FC94AE0be2B685b8dE434a99B2552AAc3;
    address public constant ADVISOR_TWO = 0x4f2AF8d2614190Cc80c6E9772B0C367db8D9753C;
    address public constant ADVISOR_THREE = 0x715a70a7c7d76acc8d5874862e381c1940c19cce;
    address public constant ADVISOR_FOUR = 0x8615F13C12c24DFdca0ba32511E2861BE02b93b2;
    address public constant AMBASSADOR_ONE = 0xd3841FB80CE408ca7d0b41D72aA91CA74652AF47;
    address public constant AMBASSADOR_TWO = 0xDb775577538018a689E4Ad2e8eb5a7Ae7c34722B;
    address public constant AMBASSADOR_THREE = 0xaa967e0ce6A1Ff5F9c124D15AD0412F137C99767;
    address public constant AMBASSADOR_FOUR = 0x910B41a6568a645437bC286A5C733f3c501d8c88;
    address public constant AMBASSADOR_FIVE = 0xb1d16BFE840E66E3c81785551832aAACB4cf69f3;
    address public constant AMBASSADOR_SIX = 0x5F6ff16364BfEf546270325695B6e90cc89C497a;
    address public constant AMBASSADOR_SEVEN = 0x58656e8872B0d266c2acCD276cD23F4C0B5fEfb9;
    address public constant SPECIALIST_ONE = 0x8a815e818E617d1f93BE7477D179258aC2d25310;
    address public constant SPECIALIST_TWO = 0x1eba6702ba21cfc1f6c87c726364b60a5e444901;
    address public constant SPECIALIST_THREE = 0x82eae6c30ed9606e2b389ae65395648748c6a17f;
    // Stakes of Patrons
    uint public constant MELONPORT_COMPANY_STAKE = 1000; // 10% of all created melon token allocated to melonport company
    uint public constant FOUNDER_STAKE = 445; // 4.45% of all created melon token allocated to founder
    uint public constant EXT_COMPANY_STAKE_ONE = 150; // 1.5% of all created melon token allocated to external company
    uint public constant EXT_COMPANY_STAKE_TWO = 100; // 1% of all created melon token allocated to external company
    uint public constant EXT_COMPANY_STAKE_THREE = 50; // 0.5% of all created melon token allocated to external company
    uint public constant ADVISOR_STAKE_ONE = 150; // 1.5% of all created melon token allocated to advisor
    uint public constant ADVISOR_STAKE_TWO = 50; // 0.5% of all created melon token allocated to advisor
    uint public constant ADVISOR_STAKE_THREE = 25; // 0.25% of all created melon token allocated to advisor
    uint public constant ADVISOR_STAKE_FOUR = 10; // 0.1% of all created melon token allocated to advisor
    uint public constant AMBASSADOR_STAKE = 5; // 0.05% of all created melon token allocated to ambassadors
    uint public constant SPECIALIST_STAKE_ONE = 25; // 0.25% of all created melon token allocated to specialist
    uint public constant SPECIALIST_STAKE_TWO = 10; // 0.1% of all created melon token allocated to specialist
    uint public constant SPECIALIST_STAKE_THREE = 5; // 0.05% of all created melon token allocated to specialist
    uint public constant DIVISOR_STAKE = 10000; // Stakes are divided by this number; Results to one basis point

    // Fields that are only changed in constructor
    address public melonport; // All deposited ETH will be instantly forwarded to this address.
    address public btcs; // Bitcoin Suisse address for their allocation option
    address public signer; // Signer address as on https://contribution.melonport.com
    uint public startTime; // Contribution start time in seconds
    uint public endTime; // Contribution end time in seconds
    MelonToken public melonToken; // Contract of the ERC20 compliant melon token

    // Fields that can be changed by functions
    uint public etherRaised; // This will keep track of the Ether raised during the contribution
    bool public halted; // The melonport address can set this to true to halt the contribution due to an emergency

    // EVENTS

    event TokensBought(address indexed sender, uint eth, uint amount);

    // MODIFIERS

    modifier is_signer_signature(uint8 v, bytes32 r, bytes32 s) {
        bytes32 hash = sha256(msg.sender);
        assert(ecrecover(hash, v, r, s) == signer);
        _;
    }

    modifier only_melonport {
        assert(msg.sender == melonport);
        _;
    }

    modifier only_btcs {
        assert(msg.sender == btcs);
        _;
    }

    modifier is_not_halted {
        assert(!halted);
        _;
    }

    modifier ether_cap_not_reached {
        assert(safeAdd(etherRaised, msg.value) <= ETHER_CAP);
        _;
    }

    modifier btcs_ether_cap_not_reached {
        assert(safeAdd(etherRaised, msg.value) <= BTCS_ETHER_CAP);
        _;
    }

    modifier is_not_earlier_than(uint x) {
        assert(now >= x);
        _;
    }

    modifier is_earlier_than(uint x) {
        assert(now < x);
        _;
    }

    // CONSTANT METHODS

    /// Pre: startTime, endTime specified in constructor,
    /// Post: Price rate at given blockTime; One ether equals priceRate() / DIVISOR_PRICE of melon tokens
    function priceRate() constant returns (uint) {
        // Four price tiers
        if (startTime <= now && now < startTime + 1 weeks)
            return PRICE_RATE_FIRST;
        if (startTime + 1 weeks <= now && now < startTime + 2 weeks)
            return PRICE_RATE_SECOND;
        if (startTime + 2 weeks <= now && now < startTime + 3 weeks)
            return PRICE_RATE_THIRD;
        if (startTime + 3 weeks <= now && now < endTime)
            return PRICE_RATE_FOURTH;
        // Should not be called before or after contribution period
        assert(false);
    }

    // NON-CONSTANT METHODS

    /// Pre: All fields, except { melonport, btcs, signer, startTime } are valid
    /// Post: All fields, including { melonport, btcs, signer, startTime } are valid
    function Contribution(address setMelonport, address setBTCS, address setSigner, uint setStartTime) {
        melonport = setMelonport;
        btcs = setBTCS;
        signer = setSigner;
        startTime = setStartTime;
        endTime = startTime + MAX_CONTRIBUTION_DURATION;
        melonToken = new MelonToken(this, melonport, startTime, endTime); // Create Melon Token Contract
        var maxTotalTokenAmountOfferedToPublic = melonToken.MAX_TOTAL_TOKEN_AMOUNT_OFFERED_TO_PUBLIC();
        uint stakeMultiplier = maxTotalTokenAmountOfferedToPublic / DIVISOR_STAKE;
        // Mint liquid tokens for melonport company, liquid means tradeale
        melonToken.mintLiquidToken(melonport,       MELONPORT_COMPANY_STAKE * stakeMultiplier);
        // Mint iced tokens that are unable to trade for two years and allocate according to relevant stakes
        melonToken.mintIcedToken(FOUNDER_ONE,       FOUNDER_STAKE *           stakeMultiplier);
        melonToken.mintIcedToken(FOUNDER_TWO,       FOUNDER_STAKE *           stakeMultiplier);
        melonToken.mintIcedToken(EXT_COMPANY_ONE,   EXT_COMPANY_STAKE_ONE *   stakeMultiplier);
        melonToken.mintIcedToken(EXT_COMPANY_TWO,   EXT_COMPANY_STAKE_TWO *   stakeMultiplier);
        melonToken.mintIcedToken(EXT_COMPANY_THREE, EXT_COMPANY_STAKE_THREE * stakeMultiplier);
        melonToken.mintIcedToken(ADVISOR_ONE,       ADVISOR_STAKE_ONE *       stakeMultiplier);
        melonToken.mintIcedToken(ADVISOR_TWO,       ADVISOR_STAKE_TWO *       stakeMultiplier);
        melonToken.mintIcedToken(ADVISOR_THREE,     ADVISOR_STAKE_THREE *     stakeMultiplier);
        melonToken.mintIcedToken(ADVISOR_FOUR,      ADVISOR_STAKE_FOUR *      stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_ONE,    AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_TWO,    AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_THREE,  AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_FOUR,   AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_FIVE,   AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_SIX,    AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(AMBASSADOR_SEVEN,  AMBASSADOR_STAKE *        stakeMultiplier);
        melonToken.mintIcedToken(SPECIALIST_ONE,    SPECIALIST_STAKE_ONE *    stakeMultiplier);
        melonToken.mintIcedToken(SPECIALIST_TWO,    SPECIALIST_STAKE_TWO *    stakeMultiplier);
        melonToken.mintIcedToken(SPECIALIST_THREE,  SPECIALIST_STAKE_THREE *  stakeMultiplier);
    }

    /// Pre: Valid signature received from https://contribution.melonport.com
    /// Post: Bought melon tokens according to priceRate() and msg.value
    function buy(uint8 v, bytes32 r, bytes32 s) payable { buyRecipient(msg.sender, v, r, s); }

    /// Pre: Valid signature received from https://contribution.melonport.com
    /// Post: Bought melon tokens according to priceRate() and msg.value on behalf of recipient
    function buyRecipient(address recipient, uint8 v, bytes32 r, bytes32 s)
        payable
        is_signer_signature(v, r, s)
        is_not_earlier_than(startTime)
        is_earlier_than(endTime)
        is_not_halted
        ether_cap_not_reached
    {
        uint amount = safeMul(msg.value, priceRate()) / DIVISOR_PRICE;
        melonToken.mintLiquidToken(recipient, amount);
        etherRaised = safeAdd(etherRaised, msg.value);
        assert(melonport.send(msg.value));
        TokensBought(recipient, msg.value, amount);
    }

    /// Pre: BTCS before contribution period, BTCS has exclusive right to buy up to 25% of all melon tokens
    /// Post: Bought melon tokens according to PRICE_RATE_FIRST and msg.value on behalf of recipient
    function btcsBuyRecipient(address recipient)
        payable
        only_btcs
        is_earlier_than(startTime)
        is_not_halted
        btcs_ether_cap_not_reached
    {
        uint amount = safeMul(msg.value, PRICE_RATE_FIRST) / DIVISOR_PRICE;
        melonToken.mintLiquidToken(recipient, amount);
        etherRaised = safeAdd(etherRaised, msg.value);
        assert(melonport.send(msg.value));
        TokensBought(recipient, msg.value, amount);
    }

    /// Pre: Emergency situation that requires contribution period to stop.
    /// Post: Contributing not possible anymore.
    function halt() only_melonport { halted = true; }

    /// Pre: Emergency situation resolved.
    /// Post: Contributing becomes possible again withing the outlined restrictions.
    function unhalt() only_melonport { halted = false; }

    /// Pre: Restricted to melonport.
    /// Post: New address set. To halt contribution and/or change minter in MelonToken contract.
    function changeMelonportAddress(address newAddress) only_melonport { melonport = newAddress; }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"minter","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"changeMelonportAddress","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"endTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_TOKEN_AMOUNT_OFFERED_TO_PUBLIC","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newAddress","type":"address"}],"name":"changeMintingAddress","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"lockedBalanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"startTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintIcedToken","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"mintLiquidToken","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"MAX_TOTAL_TOKEN_AMOUNT","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"}],"name":"unlockBalance","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"melonport","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"THAWING_DURATION","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"setMinter","type":"address"},{"name":"setMelonport","type":"address"},{"name":"setStartTime","type":"uint256"},{"name":"setEndTime","type":"uint256"}],"payable":false,"type":"constructor"},{"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"}]

60606040523461000057604051608080610bb983398101604090815281516020830151918301516060909301519092905b60038054600160a060020a03808716600160a060020a0319928316179092556004805492861692909116919091179055600582905560068190555b505050505b610b3a8061007f6000396000f3006060604052361561010c5763ffffffff60e060020a60003504166306fdde038114610111578063075461721461019e578063095ea7b3146101c757806318160ddd146101f7578063201453281461021657806323b872dd14610231578063313ce567146102675780633197cbb614610286578063336da059146102a557806351892f07146102c457806359355736146102df57806370a082311461030a57806378e979251461033557806381597d0c146103545780638cae711f1461037257806395d89b4114610390578063a89c5be01461041d578063a9059cbb1461043c578063ce7a60ab1461046c578063dd62ed3e14610487578063fd222745146104b8578063fdee5c22146104e1575b610000565b346100005761011e610500565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576101ab610537565b60408051600160a060020a039092168252519081900360200190f35b34610000576101e3600160a060020a0360043516602435610546565b604080519115158252519081900360200190f35b34610000576102046105b1565b60408051918252519081900360200190f35b346100005761022f600160a060020a03600435166105b7565b005b34610000576101e3600160a060020a03600435811690602435166044356105ff565b604080519115158252519081900360200190f35b3461000057610204610626565b60408051918252519081900360200190f35b346100005761020461062b565b60408051918252519081900360200190f35b3461000057610204610631565b60408051918252519081900360200190f35b346100005761022f600160a060020a036004351661063f565b005b3461000057610204600160a060020a0360043516610687565b60408051918252519081900360200190f35b3461000057610204600160a060020a03600435166106a6565b60408051918252519081900360200190f35b34610000576102046106c5565b60408051918252519081900360200190f35b346100005761022f600160a060020a03600435166024356106cb565b005b346100005761022f600160a060020a036004351660243561075b565b005b346100005761011e6107eb565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610204610822565b60408051918252519081900360200190f35b34610000576101e3600160a060020a0360043516602435610831565b604080519115158252519081900360200190f35b346100005761022f600160a060020a0360043516610856565b005b3461000057610204600160a060020a03600435811690602435166108c2565b60408051918252519081900360200190f35b34610000576101ab6108ef565b60408051600160a060020a039092168252519081900360200190f35b34610000576102046108fe565b60408051918252519081900360200190f35b60408051808201909152600b81527f4d656c6f6e20546f6b656e000000000000000000000000000000000000000000602082015281565b600354600160a060020a031681565b600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60025481565b6004546105d29033600160a060020a03908116911614610906565b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600060065461060f814211610906565b61061a858585610916565b91505b5b509392505050565b601281565b60065481565b69d3c21bcecceda100000081565b60045461065a9033600160a060020a03908116911614610906565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0381166000908152600760205260409020545b919050565b600160a060020a0381166000908152602081905260409020545b919050565b60055481565b6003546106e69033600160a060020a03908116911614610906565b806107076012600a0a621312d00261070060025484610a23565b1115610906565b600160a060020a03831660009081526007602052604090205461072a9083610a23565b600160a060020a0384166000908152600760205260409020556002546107509083610a23565b6002555b5b505b5050565b6003546107769033600160a060020a03908116911614610906565b806107976012600a0a621312d00261070060025484610a23565b1115610906565b600160a060020a0383166000908152602081905260409020546107ba9083610a23565b600160a060020a0384166000908152602081905260409020556002546107509083610a23565b6002555b5b505b5050565b60408051808201909152600381527f4d4c4e0000000000000000000000000000000000000000000000000000000000602082015281565b6a0108b2a2c280290940000081565b6000600654610841814211610906565b61084b8484610a4b565b91505b5b5092915050565b6303c267006006540161086a814211610906565b600160a060020a038216600090815260208181526040808320546007909252909120546108979190610a23565b600160a060020a0383166000908152602081815260408083209390935560079052908120555b5b5050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600454600160a060020a031681565b6303c2670081565b8015156105fb57610000565b5b50565b600160a060020a0383166000908152602081905260408120548290108015906109665750600160a060020a0380851660009081526001602090815260408083203390941683529290522054829010155b801561098b5750600160a060020a038316600090815260208190526040902054828101115b15610a1757600160a060020a0380841660008181526020818152604080832080548801905588851680845281842080548990039055600183528184203390961684529482529182902080548790039055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3506001610a1b565b5060005b5b9392505050565b6000828201610a40848210801590610a3b5750838210155b610906565b8091505b5092915050565b600160a060020a033316600090815260208190526040812054829010801590610a8d5750600160a060020a038316600090815260208190526040902054828101115b15610aff57600160a060020a0333811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060016105ab565b5060006105ab565b5b929150505600a165627a7a7230582031ad327722684ad0754a3abefefa220e61d836c0a4f14bcb989ebd3a29f86d2500290000000000000000000000003bf541f87056d134e0109be1be92978b26cb09e000000000000000000000000000ec6379d7186193983e90ba58d3cf169f7e4af30000000000000000000000000000000000000000000000000000000058a434b00000000000000000000000000000000000000000000000000000000058c91eb0

Deployed Bytecode

0x6060604052361561010c5763ffffffff60e060020a60003504166306fdde038114610111578063075461721461019e578063095ea7b3146101c757806318160ddd146101f7578063201453281461021657806323b872dd14610231578063313ce567146102675780633197cbb614610286578063336da059146102a557806351892f07146102c457806359355736146102df57806370a082311461030a57806378e979251461033557806381597d0c146103545780638cae711f1461037257806395d89b4114610390578063a89c5be01461041d578063a9059cbb1461043c578063ce7a60ab1461046c578063dd62ed3e14610487578063fd222745146104b8578063fdee5c22146104e1575b610000565b346100005761011e610500565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34610000576101ab610537565b60408051600160a060020a039092168252519081900360200190f35b34610000576101e3600160a060020a0360043516602435610546565b604080519115158252519081900360200190f35b34610000576102046105b1565b60408051918252519081900360200190f35b346100005761022f600160a060020a03600435166105b7565b005b34610000576101e3600160a060020a03600435811690602435166044356105ff565b604080519115158252519081900360200190f35b3461000057610204610626565b60408051918252519081900360200190f35b346100005761020461062b565b60408051918252519081900360200190f35b3461000057610204610631565b60408051918252519081900360200190f35b346100005761022f600160a060020a036004351661063f565b005b3461000057610204600160a060020a0360043516610687565b60408051918252519081900360200190f35b3461000057610204600160a060020a03600435166106a6565b60408051918252519081900360200190f35b34610000576102046106c5565b60408051918252519081900360200190f35b346100005761022f600160a060020a03600435166024356106cb565b005b346100005761022f600160a060020a036004351660243561075b565b005b346100005761011e6107eb565b604080516020808252835181830152835191928392908301918501908083838215610164575b80518252602083111561016457601f199092019160209182019101610144565b505050905090810190601f1680156101905780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3461000057610204610822565b60408051918252519081900360200190f35b34610000576101e3600160a060020a0360043516602435610831565b604080519115158252519081900360200190f35b346100005761022f600160a060020a0360043516610856565b005b3461000057610204600160a060020a03600435811690602435166108c2565b60408051918252519081900360200190f35b34610000576101ab6108ef565b60408051600160a060020a039092168252519081900360200190f35b34610000576102046108fe565b60408051918252519081900360200190f35b60408051808201909152600b81527f4d656c6f6e20546f6b656e000000000000000000000000000000000000000000602082015281565b600354600160a060020a031681565b600160a060020a03338116600081815260016020908152604080832094871680845294825280832086905580518681529051929493927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060015b92915050565b60025481565b6004546105d29033600160a060020a03908116911614610906565b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600060065461060f814211610906565b61061a858585610916565b91505b5b509392505050565b601281565b60065481565b69d3c21bcecceda100000081565b60045461065a9033600160a060020a03908116911614610906565b6003805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b600160a060020a0381166000908152600760205260409020545b919050565b600160a060020a0381166000908152602081905260409020545b919050565b60055481565b6003546106e69033600160a060020a03908116911614610906565b806107076012600a0a621312d00261070060025484610a23565b1115610906565b600160a060020a03831660009081526007602052604090205461072a9083610a23565b600160a060020a0384166000908152600760205260409020556002546107509083610a23565b6002555b5b505b5050565b6003546107769033600160a060020a03908116911614610906565b806107976012600a0a621312d00261070060025484610a23565b1115610906565b600160a060020a0383166000908152602081905260409020546107ba9083610a23565b600160a060020a0384166000908152602081905260409020556002546107509083610a23565b6002555b5b505b5050565b60408051808201909152600381527f4d4c4e0000000000000000000000000000000000000000000000000000000000602082015281565b6a0108b2a2c280290940000081565b6000600654610841814211610906565b61084b8484610a4b565b91505b5b5092915050565b6303c267006006540161086a814211610906565b600160a060020a038216600090815260208181526040808320546007909252909120546108979190610a23565b600160a060020a0383166000908152602081815260408083209390935560079052908120555b5b5050565b600160a060020a038083166000908152600160209081526040808320938516835292905220545b92915050565b600454600160a060020a031681565b6303c2670081565b8015156105fb57610000565b5b50565b600160a060020a0383166000908152602081905260408120548290108015906109665750600160a060020a0380851660009081526001602090815260408083203390941683529290522054829010155b801561098b5750600160a060020a038316600090815260208190526040902054828101115b15610a1757600160a060020a0380841660008181526020818152604080832080548801905588851680845281842080548990039055600183528184203390961684529482529182902080548790039055815186815291519293927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3506001610a1b565b5060005b5b9392505050565b6000828201610a40848210801590610a3b5750838210155b610906565b8091505b5092915050565b600160a060020a033316600090815260208190526040812054829010801590610a8d5750600160a060020a038316600090815260208190526040902054828101115b15610aff57600160a060020a0333811660008181526020818152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060016105ab565b5060006105ab565b5b929150505600a165627a7a7230582031ad327722684ad0754a3abefefa220e61d836c0a4f14bcb989ebd3a29f86d250029

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

0000000000000000000000003bf541f87056d134e0109be1be92978b26cb09e000000000000000000000000000ec6379d7186193983e90ba58d3cf169f7e4af30000000000000000000000000000000000000000000000000000000058a434b00000000000000000000000000000000000000000000000000000000058c91eb0

-----Decoded View---------------
Arg [0] : setMinter (address): 0x3BF541f87056D134E0109BE1Be92978b26Cb09e0
Arg [1] : setMelonport (address): 0x00Ec6379D7186193983e90bA58d3cF169F7e4Af3
Arg [2] : setStartTime (uint256): 1487156400
Arg [3] : setEndTime (uint256): 1489575600

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 0000000000000000000000003bf541f87056d134e0109be1be92978b26cb09e0
Arg [1] : 00000000000000000000000000ec6379d7186193983e90ba58d3cf169f7e4af3
Arg [2] : 0000000000000000000000000000000000000000000000000000000058a434b0
Arg [3] : 0000000000000000000000000000000000000000000000000000000058c91eb0


Swarm Source

bzzr://31ad327722684ad0754a3abefefa220e61d836c0a4f14bcb989ebd3a29f86d25

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
[ Download: CSV Export  ]
[ 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.