Forkchoice Ethereum Mainnet

Address Contract Partially Verified

Address 0x54F0E3b0d7CcBB65E56D166350aa86F7E71cE20b
Balance 0 ETH
Nonce 1
Code Size 3771 bytes
Indexed Transactions 0
External Etherscan · Sourcify

Contract Bytecode

3771 bytes
0x6080604052600436106101325763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde038114610137578063095ea7b3146101c157806316279055146101f957806318160ddd1461021a57806323b872dd14610241578063313ce5671461026b5780633f4ba83a1461029657806340c10f19146102ad57806342966c68146102d15780635c975abb146102e957806364045c97146102fe57806370a08231146103225780638456cb59146103435780638da5cb5b1461035857806395d89b411461038957806399ce2ab81461039e578063a9059cbb146103bf578063bf5373dc146103e3578063cde9f2ea14610404578063dd62ed3e14610419578063f2fde38b14610440578063f474962414610461578063fc87bf151461048d575b600080fd5b34801561014357600080fd5b5061014c6104ae565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018657818101518382015260200161016e565b50505050905090810190601f1680156101b35780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156101cd57600080fd5b506101e5600160a060020a03600435166024356104e5565b604080519115158252519081900360200190f35b34801561020557600080fd5b506101e5600160a060020a0360043516610573565b34801561022657600080fd5b5061022f61057b565b60408051918252519081900360200190f35b34801561024d57600080fd5b506101e5600160a060020a0360043581169060243516604435610581565b34801561027757600080fd5b506102806106e0565b6040805160ff9092168252519081900360200190f35b3480156102a257600080fd5b506102ab6106e5565b005b3480156102b957600080fd5b506101e5600160a060020a0360043516602435610742565b3480156102dd57600080fd5b506101e5600435610816565b3480156102f557600080fd5b506101e561088b565b34801561030a57600080fd5b506102ab600160a060020a0360043516602435610894565b34801561032e57600080fd5b5061022f600160a060020a0360043516610904565b34801561034f57600080fd5b506102ab61091f565b34801561036457600080fd5b5061036d61097e565b60408051600160a060020a039092168252519081900360200190f35b34801561039557600080fd5b5061014c61098d565b3480156103aa57600080fd5b506102ab600160a060020a03600435166109c4565b3480156103cb57600080fd5b506101e5600160a060020a0360043516602435610a4c565b3480156103ef57600080fd5b5061022f600160a060020a0360043516610aba565b34801561041057600080fd5b5061022f610ad5565b34801561042557600080fd5b5061022f600160a060020a0360043581169060243516610adb565b34801561044c57600080fd5b506102ab600160a060020a0360043516610b06565b34801561046d57600080fd5b506102ab6024600480358281019290820135918135918201910135610b9a565b34801561049957600080fd5b506101e5600160a060020a0360043516610c07565b60408051808201909152600481527f5665656e00000000000000000000000000000000000000000000000000000000602082015281565b600080821180156104fe5750816104fb33610904565b10155b1561056957336000818152600860209081526040808320600160a060020a03881680855290835292819020869055805186815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a350600161056d565b5060005b92915050565b6000903b1190565b60065490565b6000808211801561059a57508161059785610904565b10155b80156105c95750600160a060020a03841660009081526008602090815260408083203384529091529020548211155b156106d557600160a060020a0384166000908152600560205260409020546105f7908363ffffffff610c2516565b600160a060020a0385166000908152600560209081526040808320939093556008815282822033835290522054610634908363ffffffff610c2516565b600160a060020a038086166000908152600860209081526040808320338452825280832094909455918616815260059091522054610678908363ffffffff610c3716565b600160a060020a0384166000818152600560209081526040918290209390935580518581529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35060016106d9565b5060005b9392505050565b601281565b600054600160a060020a031633146106fc57600080fd5b60045460ff16151561070d57600080fd5b6004805460ff191690556040517f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3390600090a1565b60008054600160a060020a0316331461075a57600080fd5b601260ff16600a0a82029150816006540160075460010111156105695760065461078a908363ffffffff610c3716565b600655600160a060020a0383166000908152600560205260409020546107b6908363ffffffff610c3716565b600160a060020a03841660008181526005602090815260409182902093909355805191825291810184905281517f5f98c4774888016b0aaebc40ab2028158e56c19845778ddf060f38ff0de6f4ee929181900390910190a150600161056d565b6000808211801561082f57508161082c33610904565b10155b156108825733600090815260056020526040902054610854908363ffffffff610c2516565b33600090815260056020526040902055600654610877908363ffffffff610c2516565b600655506001610886565b5060005b919050565b60045460ff1681565b600054600160a060020a031633146108ab57600080fd5b60018054600160a060020a038416600090815260026020908152604080832062015180870290940190935560038152828220805460ff191690941790935560059092529020546006546108fd91610c25565b6006555050565b600160a060020a031660009081526005602052604090205490565b600054600160a060020a0316331461093657600080fd5b60045460ff161561094657600080fd5b6004805460ff191660011790556040517f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62590600090a1565b600054600160a060020a031681565b60408051808201909152600481527f5645454e00000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03811660009081526002602052604090205442118015610a035750600160a060020a03811660009081526003602052604090205460ff165b15610a4957600160a060020a0381166000908152600360209081526040808320805460ff191690556005909152902054600654610a459163ffffffff610c3716565b6006555b50565b60045460009060609060ff1615610a6257600080fd5b610a6b336109c4565b3360009081526003602052604090205460ff1615610a8857600080fd5b610a9184610573565b15610aa857610aa1848483610c46565b9150610ab3565b610aa1848483610def565b5092915050565b600160a060020a031660009081526002602052604090205490565b60015481565b600160a060020a03918216600090815260086020908152604080832093909416825291909152205490565b600054600160a060020a03163314610b1d57600080fd5b600160a060020a0381161515610b3257600080fd5b60008054604051600160a060020a03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60008054600160a060020a03163314610bb257600080fd5b5060005b83811015610c0057610bf7858583818110610bcd57fe5b90506020020135600160a060020a03168484848181101515610beb57fe5b90506020020135610a4c565b50600101610bb6565b5050505050565b600160a060020a031660009081526003602052604090205460ff1690565b600082821115610c3157fe5b50900390565b6000828201838110156106d957fe5b60008083610c5333610904565b1015610c5e57600080fd5b610c7784610c6b33610904565b9063ffffffff610c2516565b33600090815260056020526040902055610ca084610c9487610904565b9063ffffffff610c3716565b600160a060020a03861660008181526005602090815260408083209490945592517fc0ee0b8a0000000000000000000000000000000000000000000000000000000081523360048201818152602483018a90526060604484019081528951606485015289518c9850959663c0ee0b8a9693958c958c956084909101928601918190849084905b83811015610d3e578181015183820152602001610d26565b50505050905090810190601f168015610d6b5780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b158015610d8c57600080fd5b505af1158015610da0573d6000803e3d6000fd5b5050604080518781529051600160a060020a03891693503392507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a3506001949350505050565b600082610dfb33610904565b1015610e0657600080fd5b610e1383610c6b33610904565b33600090815260056020526040902055610e3083610c9486610904565b600160a060020a0385166000818152600560209081526040918290209390935580518681529051919233927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a350600193925050505600a165627a7a72305820774ddee1f786e93a9ee8d8e42a45fd71c3b1627270af7179a64059df0d43ba5e0029

Verified Source Code Partial Match

Compiler: v0.4.24+commit.e67f0147 EVM: byzantium Optimization: Yes (200 runs)
Veen.sol 396 lines
pragma solidity ^0.4.18;

// File: contracts/SafeMath.sol

/*

    Copyright 2018, All rights reserved.
     _      _
    \ \    / / ___   ___  _ __
     \ \  / / / _ \ / _ \| '_ \
      \ \/ / |  __/|  __/| | | |
       \__/   \___| \___||_| |_|

    @title SafeMath
    @author OpenZeppelin
    @dev Math operations with safety checks that throw on error

 */
library SafeMath {

  /**
  * @dev Multiplies two numbers, throws on overflow.
  */
  function mul(uint256 a, uint256 b) internal pure returns (uint256) {
    if (a == 0) {
      return 0;
    }
    uint256 c = a * b;
    assert(c / a == b);
    return c;
  }

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

  /**
  * @dev Substracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
  */
  function sub(uint256 a, uint256 b) internal pure returns (uint256) {
    assert(b <= a);
    return a - b;
  }

  /**
  * @dev Adds two numbers, throws on overflow.
  */
  function add(uint256 a, uint256 b) internal pure returns (uint256) {
    uint256 c = a + b;
    assert(c >= a);
    return c;
  }
}

// File: contracts/Ownable.sol

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

contract Ownable {
  address public owner;
  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
  using SafeMath for uint256;
  uint256 public startdate;

  function Ownable() public {

    owner = msg.sender;
    startdate = now;
  }

  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }

  function transferOwnership(address newOwner) public onlyOwner {
    require(newOwner != address(0));
    OwnershipTransferred(owner, newOwner);
    owner = newOwner;
  }


}

// File: contracts/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
  event Pause();
  event Unpause();
  mapping(address => uint256) private _lock_list_period;
  mapping(address => bool) private _lock_list;
  bool public paused = false;
  mapping(address => uint256) internal _balances;
  uint256 internal _tokenSupply;

  /**
   * @dev Modifier to make a function callable only when the contract is not paused.
   */
  modifier whenNotPaused() {
    require(!paused);
    _;
  }

  /**
   * @dev Modifier to make a function callable only when the contract is paused.
   */
  modifier whenPaused() {
    require(paused);
    _;
  }
  /**
   *
   */



  modifier isLockAddress() {
    check_lock_period(msg.sender);
    if(_lock_list[msg.sender]){
        revert();
    }

    _;

  }

  function check_lock_period(address check_address) {
      if(now > _lock_list_period[check_address] && _lock_list[check_address]){
        _lock_list[check_address] = false;
        _tokenSupply = _tokenSupply.add(_balances[check_address]);
      }

  }

  function check_period(address check_address) constant public returns(uint256){
      return _lock_list_period[check_address];

  }

  function check_lock(address check_address) constant public returns(bool){

      return _lock_list[check_address];

  }
  /**
   *
   */
  function set_lock_list(address lock_address, uint period) onlyOwner external {
      _lock_list_period[lock_address] = startdate + (period * 1 days);
      _lock_list[lock_address]  = true;
      _tokenSupply = _tokenSupply.sub(_balances[lock_address]);
  }

  /**
   * @dev called by the owner to pause, triggers stopped state
   */
  function pause() onlyOwner whenNotPaused public {
    paused = true;
    Pause();
  }
  /**
   * @dev called by the owner to unpause, returns to normal state
   */
  function unpause() onlyOwner whenPaused public {
    paused = false;
    Unpause();
  }
}

// File: contracts/ERC20Token.sol

/*

    Copyright 2018, All rights reserved.
     _      _
    \ \    / / ___   ___  _ __
     \ \  / / / _ \ / _ \| '_ \
      \ \/ / |  __/|  __/| | | |
       \__/   \___| \___||_| |_|

    @title Veen Token Contract.
    @description ERC-20 Interface

*/

interface ERC20Token {

    function allowance(address tokenOwner, address spender) public constant returns (uint remaining);
    function approve(address spender, uint tokens) public returns (bool success);
    function transferFrom(address from, address to, uint tokens) public returns (bool success);

    event Approval(address indexed tokenOwner, address indexed spender, uint tokens);
}

// File: contracts/ERC223.sol

interface ERC223 {

    function totalSupply() public constant returns (uint);
    function balanceOf(address who) public constant returns (uint);
    function transfer(address to, uint value) public returns (bool);

}

// File: contracts/Receiver_Interface.sol

/*
 * Contract that is working with ERC223 tokens
 */

 contract ContractReceiver {

    struct TKN {
        address sender;
        uint value;
        bytes data;
        bytes4 sig;
    }


    function tokenFallback(address _from, uint _value, bytes _data) public pure {
      TKN memory tkn;
      tkn.sender = _from;
      tkn.value = _value;
      tkn.data = _data;
      uint32 u = uint32(_data[3]) + (uint32(_data[2]) << 8) + (uint32(_data[1]) << 16) + (uint32(_data[0]) << 24);
      tkn.sig = bytes4(u);

      /* tkn variable is analogue of msg variable of Ether transaction
      *  tkn.sender is person who initiated this token transaction   (analogue of msg.sender)
      *  tkn.value the number of tokens that were sent   (analogue of msg.value)
      *  tkn.data is data of token transaction   (analogue of msg.data)
      *  tkn.sig is 4 bytes signature of function
      *  if data of token transaction is a function execution
      */
    }
}

// File: contracts/Veen.sol

/*
    Copyright 2018, All rights reserved.
     _      _
    \ \    / / ___   ___  _ __
     \ \  / / / _ \ / _ \| '_ \
      \ \/ / |  __/|  __/| | | |
       \__/   \___| \___||_| |_|

    @title Veen Token Contract.
    @description Veen token is a ERC20-compliant token.

*/

contract Veen is ERC20Token, Pausable, ERC223{

    using SafeMath for uint;

    string public constant name = "Veen";
    string public constant symbol = "VEEN";
    uint8 public constant decimals = 18;

    uint private _totalSupply;

    mapping(address => mapping(address => uint256)) private _allowed;
    event MintedLog(address to, uint256 amount);
    event Transfer(address indexed from, address indexed to, uint value);


    function Veen() public {
        _tokenSupply = 0;
        _totalSupply = 15000000000 * (uint256(10) ** decimals);

    }

    function totalSupply() public constant returns (uint256) {
        return _tokenSupply;
    }

    function mint(address to, uint256 amount) onlyOwner public returns (bool){

        amount = amount * (uint256(10) ** decimals);
        if(_totalSupply + 1 > (_tokenSupply+amount)){
            _tokenSupply = _tokenSupply.add(amount);
            _balances[to]= _balances[to].add(amount);
            emit MintedLog(to, amount);
            return true;
        }

        return false;
    }

    function dist_list_set(address[] dist_list, uint256[] token_list) onlyOwner external{

        for(uint i=0; i < dist_list.length ;i++){
            transfer(dist_list[i],token_list[i]);
        }

    }
    function balanceOf(address tokenOwner) public constant returns (uint256 balance) {
        return _balances[tokenOwner];
    }

    function transfer(address to, uint tokens) whenNotPaused isLockAddress public returns(bool success){
    bytes memory empty;
    	if(isContract(to)) {
        	return transferToContract(to, tokens, empty);
    	}
    	else {
        	return transferToAddress(to, tokens, empty);
    	}
    }


    function approve(address spender, uint256 tokens) public returns (bool success) {

        if (tokens > 0 && balanceOf(msg.sender) >= tokens) {
            _allowed[msg.sender][spender] = tokens;
            emit Approval(msg.sender, spender, tokens);
            return true;
        }

        return false;
    }

    function allowance(address tokenOwner, address spender) public constant returns (uint remaining) {
        return _allowed[tokenOwner][spender];
    }

    function transferFrom(address from, address to, uint256 tokens) public returns (bool success) {
        if (tokens > 0 && balanceOf(from) >= tokens && _allowed[from][msg.sender] >= tokens) {
            _balances[from] = _balances[from].sub(tokens);
            _allowed[from][msg.sender] = _allowed[from][msg.sender].sub(tokens);
            _balances[to] = _balances[to].add(tokens);
            emit Transfer(msg.sender, to, tokens);
            return true;
        }
        return false;
    }

    function burn(uint256 tokens) public returns (bool success) {
        if ( tokens > 0 && balanceOf(msg.sender) >= tokens ) {
            _balances[msg.sender] = _balances[msg.sender].sub(tokens);
            _tokenSupply = _tokenSupply.sub(tokens);
            return true;
        }

        return false;
    }
  function transferToAddress(address _to, uint _value, bytes _data) private returns (bool success) {
    if (balanceOf(msg.sender) < _value) revert();
    _balances[msg.sender] = balanceOf(msg.sender).sub(_value);
    _balances[_to] = balanceOf(_to).add(_value);
    emit Transfer(msg.sender, _to, _value);
    return true;
  }

  //function that is called when transaction target is a contract
  function transferToContract(address _to, uint _value, bytes _data) private returns (bool success) {
    if (balanceOf(msg.sender) < _value) revert();
    _balances[msg.sender] = balanceOf(msg.sender).sub(_value);
    _balances[_to] = balanceOf(_to).add(_value);
    ContractReceiver receiver = ContractReceiver(_to);
    receiver.tokenFallback(msg.sender, _value, _data);
    emit Transfer(msg.sender, _to, _value);
    return true;
}



    function isContract(address _addr) view returns (bool is_contract){
      uint length;
      assembly {
            length := extcodesize(_addr)
      }
      return (length>0);
    }

    function () public payable {
        throw;

    }
}

Read Contract

allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
check_lock 0xfc87bf15 → bool
check_period 0xbf5373dc → uint256
decimals 0x313ce567 → uint8
isContract 0x16279055 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
paused 0x5c975abb → bool
startdate 0xcde9f2ea → uint256
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256

Write Contract 11 functions

These functions modify contract state and require a wallet transaction to execute.

approve 0x095ea7b3
address spender
uint256 tokens
returns: bool
burn 0x42966c68
uint256 tokens
returns: bool
check_lock_period 0x99ce2ab8
address check_address
dist_list_set 0xf4749624
address[] dist_list
uint256[] token_list
mint 0x40c10f19
address to
uint256 amount
returns: bool
pause 0x8456cb59
No parameters
set_lock_list 0x64045c97
address lock_address
uint256 period
transfer 0xa9059cbb
address to
uint256 tokens
returns: bool
transferFrom 0x23b872dd
address from
address to
uint256 tokens
returns: bool
transferOwnership 0xf2fde38b
address newOwner
unpause 0x3f4ba83a
No parameters

Recent Transactions

No transactions found for this address