Address Contract Partially Verified
Address
0x54F0E3b0d7CcBB65E56D166350aa86F7E71cE20b
Balance
0 ETH
Nonce
1
Code Size
3771 bytes
Creator
0x4a6a1730...266e at tx 0x5a2411e3...1829fd
Indexed Transactions
0
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