Address Contract Partially Verified
Address
0x922aC473A3cC241fD3a0049Ed14536452D58D73c
Balance
0 ETH
Nonce
1
Code Size
3630 bytes
Creator
0x75dD0152...DD32 at tx 0xd1def25b...2cbd44
Indexed Transactions
0
Contract Bytecode
3630 bytes
0x6060604052600436106100f05763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166306fdde0381146100f5578063095ea7b31461017f57806318160ddd146101b557806323b872dd146101da578063313ce567146102025780633547800a1461022b5780634000aea0146102bc57806370a08231146103215780637d64bcb4146103405780638da5cb5b146103535780638e2ae5641461038257806395d89b4114610395578063a9059cbb146103a8578063d5abeb01146103ca578063dd62ed3e146103dd578063e467f7e014610402578063f2fde38b14610491575b600080fd5b341561010057600080fd5b6101086104b0565b60405160208082528190810183818151815260200191508051906020019080838360005b8381101561014457808201518382015260200161012c565b50505050905090810190601f1680156101715780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561018a57600080fd5b6101a1600160a060020a03600435166024356104e7565b604051901515815260200160405180910390f35b34156101c057600080fd5b6101c8610553565b60405190815260200160405180910390f35b34156101e557600080fd5b6101a1600160a060020a0360043581169060243516604435610559565b341561020d57600080fd5b6102156106f4565b60405160ff909116815260200160405180910390f35b341561023657600080fd5b6102ba6004602481358181019083013580602081810201604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437509496506106f995505050505050565b005b34156102c757600080fd5b6101a160048035600160a060020a03169060248035919060649060443590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061081b95505050505050565b341561032c57600080fd5b6101c8600160a060020a0360043516610a15565b341561034b57600080fd5b6102ba610a30565b341561035e57600080fd5b610366610aa1565b604051600160a060020a03909116815260200160405180910390f35b341561038d57600080fd5b6101a1610ab0565b34156103a057600080fd5b610108610ac0565b34156103b357600080fd5b6101a1600160a060020a0360043516602435610af7565b34156103d557600080fd5b6101c8610c46565b34156103e857600080fd5b6101c8600160a060020a0360043581169060243516610c56565b341561040d57600080fd5b6102ba600460248135818101908301358060208181020160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843750949650610c8195505050505050565b341561049c57600080fd5b6102ba600160a060020a0360043516610db0565b60408051908101604052600581527f56414c4944000000000000000000000000000000000000000000000000000000602082015281565b600160a060020a03338116600081815260026020908152604080832094871680845294909152808220859055909291907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259085905190815260200160405180910390a350600192915050565b60005481565b600454600090819060a060020a900460ff16151560011461057957600080fd5b600160a060020a038416151561058e57600080fd5b30600160a060020a031684600160a060020a0316141515156105af57600080fd5b600160a060020a038516600090815260036020526040902054156105f257600160a060020a0385166000908152600360205260409020544210156105f257600080fd5b50600160a060020a038085166000818152600260209081526040808320339095168352938152838220549282526001905291909120548390101561063557600080fd5b8281101561064257600080fd5b600160a060020a038416600090815260016020526040902054838101101561066657fe5b600160a060020a038086166000818152600260209081526040808320338616845282528083208054899003905583835260019091528082208054889003905592871680825290839020805487019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9086905190815260200160405180910390a3506001949350505050565b601281565b6004546000908190819060a060020a900460ff161561071757600080fd5b60045433600160a060020a0390811691161461073257600080fd5b835185511461074057600080fd5b60ff85511061074e57600080fd5b600092505b84518360ff16101561081457848360ff168151811061076e57fe5b906020019060200201519150838360ff168151811061078957fe5b90602001906020020151600160a060020a038316600090815260036020526040902054909150156107b957600080fd5b600160a060020a038216600081815260036020526040908190208390557fac87f20a77d28ee8bbb58ec87ea8fa968b3393efae1a368fd50b767c2847391c9083905190815260200160405180910390a2600190920191610753565b5050505050565b600454600090819060a060020a900460ff16151560011461083b57600080fd5b6108458585610af7565b151561085057600080fd5b84600160a060020a031633600160a060020a03167fe19260aff97b920c7df27010903aeb9c8d2be5d310a2c67824cf3f15396e4c16868660405182815260406020820181815290820183818151815260200191508051906020019080838360005b838110156108c95780820151838201526020016108b1565b50505050905090810190601f1680156108f65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a361090d85610dfa565b15610a0a575083600160a060020a03811663c0ee0b8a3386866040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600160a060020a0316600160a060020a0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156109ac578082015183820152602001610994565b50505050905090810190601f1680156109d95780820380516001836020036101000a031916815260200191505b50945050505050600060405180830381600087803b15156109f957600080fd5b5af11515610a0657600080fd5b5050505b506001949350505050565b600160a060020a031660009081526001602052604090205490565b60045460a060020a900460ff1615610a4757600080fd5b60045433600160a060020a03908116911614610a6257600080fd5b6000546b033b2e3c9fd0803ce8000000901115610a7b57fe5b6004805474ff0000000000000000000000000000000000000000191660a060020a179055565b600454600160a060020a031681565b60045460a060020a900460ff1681565b60408051908101604052600381527f564c440000000000000000000000000000000000000000000000000000000000602082015281565b60045460009060a060020a900460ff161515600114610b1557600080fd5b600160a060020a0383161515610b2a57600080fd5b30600160a060020a031683600160a060020a031614151515610b4b57600080fd5b600160a060020a03331660009081526003602052604090205415610b8e57600160a060020a033316600090815260036020526040902054421015610b8e57600080fd5b600160a060020a03331660009081526001602052604090205482901015610bb457600080fd5b600160a060020a0383166000908152600160205260409020548281011015610bd857fe5b600160a060020a033381166000818152600160205260408082208054879003905592861680825290839020805486019055917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9085905190815260200160405180910390a350600192915050565b6b033b2e3c9fd0803ce800000081565b600160a060020a03918216600090815260026020908152604080832093909416825291909152205490565b6004546000908190819060a060020a900460ff1615610c9f57600080fd5b60045433600160a060020a03908116911614610cba57600080fd5b8351855114610cc857600080fd5b60ff855110610cd657600080fd5b600092505b84518360ff16101561081457848360ff1681518110610cf657fe5b906020019060200201519150838360ff1681518110610d1157fe5b906020019060200201516000549091508082011015610d2f57600080fd5b6000546b033b2e3c9fd0803ce80000009082011115610d4d57600080fd5b600160a060020a0382166000818152600160205260408082208054850190558154840182557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9084905190815260200160405180910390a3600190920191610cdb565b60045433600160a060020a03908116911614610dcb57600080fd5b6004805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b6000903b11905600a165627a7a72305820b11ec1e97e5367d19bc132813f0d459ff8c05fbac52d69a1a2bd457f33704f280029
Verified Source Code Partial Match
Compiler: v0.4.21+commit.dfe3193c
EVM: byzantium
Optimization: Yes (200 runs)
ValidToken.sol 225 lines
pragma solidity ^0.4.18;
/**
* @title ERC20 Token Interface
*/
contract ERC20 {
uint256 public totalSupply;
function balanceOf(address _owner) public view returns (uint256 balance);
function transfer(address _to, uint256 _value) public returns (bool success);
function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);
function approve(address _spender, uint256 _value) public returns (bool success);
function allowance(address _owner, address _spender) public view returns (uint256 remaining);
event Transfer(address indexed _from, address indexed _to, uint256 _value);
event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}
/**
* @title ERC677 transferAndCall token interface
* @dev See https://github.com/ethereum/EIPs/issues/677 for specification and
* discussion.
*/
contract ERC677 {
event Transfer(address indexed _from, address indexed _to, uint256 _value, bytes _data);
function transferAndCall(address _to, uint _value, bytes _data) public returns (bool success);
}
/**
* @title Receiver interface for ERC677 transferAndCall
* @dev See https://github.com/ethereum/EIPs/issues/677 for specification and
* discussion.
*/
contract ERC677Receiver {
function tokenFallback(address _from, uint _value, bytes _data) public;
}
/**
* @title VALID Token
* @dev ERC20 compatible smart contract for the VALID token. Closely follows
* ConsenSys StandardToken.
*/
contract ValidToken is ERC677, ERC20 {
// token metadata
string public constant name = "VALID";
string public constant symbol = "VLD";
uint8 public constant decimals = 18;
// total supply and maximum amount of tokens
uint256 public constant maxSupply = 10**9 * 10**uint256(decimals);
// note: this equals 10**27, which is smaller than uint256 max value (~10**77)
// token accounting
mapping(address => uint256) balances;
mapping(address => mapping(address => uint256)) internal allowed;
// token lockups
mapping(address => uint256) lockups;
event TokensLocked(address indexed _holder, uint256 _timeout);
// ownership
address public owner;
modifier onlyOwner() {
require(msg.sender == owner);
_;
}
// minting
bool public mintingDone = false;
modifier mintingFinished() {
require(mintingDone == true);
_;
}
modifier mintingInProgress() {
require(mintingDone == false);
_;
}
// constructor
function ValidToken() public {
owner = msg.sender;
}
/**
* @dev Allows the current owner to transfer the ownership.
* @param _newOwner The address to transfer ownership to.
*/
function transferOwnership(address _newOwner) public onlyOwner {
owner = _newOwner;
}
// minting functionality
function mint(address[] _recipients, uint256[] _amounts) public mintingInProgress onlyOwner {
require(_recipients.length == _amounts.length);
require(_recipients.length < 255);
for (uint8 i = 0; i < _recipients.length; i++) {
address recipient = _recipients[i];
uint256 amount = _amounts[i];
// enforce maximum token supply
require(totalSupply + amount >= totalSupply);
require(totalSupply + amount <= maxSupply);
balances[recipient] += amount;
totalSupply += amount;
Transfer(0, recipient, amount);
}
}
function lockTokens(address[] _holders, uint256[] _timeouts) public mintingInProgress onlyOwner {
require(_holders.length == _timeouts.length);
require(_holders.length < 255);
for (uint8 i = 0; i < _holders.length; i++) {
address holder = _holders[i];
uint256 timeout = _timeouts[i];
// make sure lockup period can not be overwritten
require(lockups[holder] == 0);
lockups[holder] = timeout;
TokensLocked(holder, timeout);
}
}
function finishMinting() public mintingInProgress onlyOwner {
// check hard cap again
assert(totalSupply <= maxSupply);
mintingDone = true;
}
// ERC20 functionality
function balanceOf(address _owner) public view returns (uint256) {
return balances[_owner];
}
function transfer(address _to, uint256 _value) public mintingFinished returns (bool) {
// prevent some common errors
require(_to != address(0x0));
require(_to != address(this));
// check lockups
if (lockups[msg.sender] != 0) {
require(now >= lockups[msg.sender]);
}
// check balance
require(balances[msg.sender] >= _value);
assert(balances[_to] + _value >= balances[_to]); // receiver balance overflow check
balances[msg.sender] -= _value;
balances[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
}
function transferFrom(address _from, address _to, uint256 _value) public mintingFinished returns (bool) {
// prevent some common errors
require(_to != address(0x0));
require(_to != address(this));
// check lockups
if (lockups[_from] != 0) {
require(now >= lockups[_from]);
}
// check balance and allowance
uint256 allowance = allowed[_from][msg.sender];
require(balances[_from] >= _value);
require(allowance >= _value);
assert(balances[_to] + _value >= balances[_to]); // receiver balance overflow check
allowed[_from][msg.sender] -= _value;
balances[_from] -= _value;
balances[_to] += _value;
Transfer(_from, _to, _value);
return true;
}
function approve(address _spender, uint256 _value) public returns (bool) {
// no check for zero allowance, see NOTES.md
allowed[msg.sender][_spender] = _value;
Approval(msg.sender, _spender, _value);
return true;
}
function allowance(address _owner, address _spender) public view returns (uint256) {
return allowed[_owner][_spender];
}
// ERC677 functionality
function transferAndCall(address _to, uint _value, bytes _data) public mintingFinished returns (bool) {
require(transfer(_to, _value));
Transfer(msg.sender, _to, _value, _data);
// call receiver
if (isContract(_to)) {
ERC677Receiver receiver = ERC677Receiver(_to);
receiver.tokenFallback(msg.sender, _value, _data);
}
return true;
}
function isContract(address _addr) private view returns (bool) {
uint len;
assembly {
len := extcodesize(_addr)
}
return len > 0;
}
}
Read Contract
allowance 0xdd62ed3e → uint256
balanceOf 0x70a08231 → uint256
decimals 0x313ce567 → uint8
maxSupply 0xd5abeb01 → uint256
mintingDone 0x8e2ae564 → bool
name 0x06fdde03 → string
owner 0x8da5cb5b → address
symbol 0x95d89b41 → string
totalSupply 0x18160ddd → uint256
Write Contract 8 functions
These functions modify contract state and require a wallet transaction to execute.
approve 0x095ea7b3
address _spender
uint256 _value
returns: bool
finishMinting 0x7d64bcb4
No parameters
lockTokens 0x3547800a
address[] _holders
uint256[] _timeouts
mint 0xe467f7e0
address[] _recipients
uint256[] _amounts
transfer 0xa9059cbb
address _to
uint256 _value
returns: bool
transferAndCall 0x4000aea0
address _to
uint256 _value
bytes _data
returns: bool
transferFrom 0x23b872dd
address _from
address _to
uint256 _value
returns: bool
transferOwnership 0xf2fde38b
address _newOwner
Recent Transactions
No transactions found for this address